Prvo taj svoj fajl, nazovimo ga "Faktura", sačuvaš kao
xlt (Excel Template), a onda dodaš VBA kod nešto slično ovome:
(prilagodi prema vlastitim potrebama)
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim stLine As String
stLine = "" & Right(Year(Range(["DATUM"])), 2) _
& "-" & Range(["BROJFAKTURE"]) _
& " " & Range(["NAZIV_FIRME"])
If Me.Name = stLine & ".xls" Then
Exit Sub
Else
If Range(["BROJFAKTURE"]) <> "000" Then
FileSaveName = Application.GetSaveAsFilename("" & Right(Year(Range(["DATUM"])), 2) _
& "-" & Range(["BROJFAKTURE"]) _
& " " & Range(["NAZIV_FIRME"]), fileFilter:="Excel Files (*.xls), *.xls")
If FileSaveName <> False Then
ActiveWorkbook.SaveAs Filename:=FileSaveName
End If
End If
End If
End Sub
Objašnjenje:
U gornjem primeru su definisana imena (Names) za pojedine ćelije, koje postoje na radnom listu
•DATUM
•BROJFAKTURE
•NAZIV_FIRME
•...
Početna vrednost, prilikom otvaranja fajla, u ćeliji BROJFAKTURE je uvek "000"
Procedura vrši proveru da li pomenuta ćelija ima vrednost različitu od početne i ako je uslov zadovoljen, prilikom zatvaranja fajla nudi da se fajl sačuva kao
xls pod prethodno definisanim imenom, koje se sastoji od GG
(dvocifrena oznaka za godinu) BROJA FAKTURE i NAZIVA FIRME.
Primer:
-Ako je unet broj fakture: 123
-Datum izdavanja: 18.06.2009
(ovo se takođe drugom procedurom, automatski nudi kao današnji prilikom otvaranja fajla)
-Naziv Firme: ES Forum
Ponuđeno ime pod kojim će Excel sačuvati fajl je:
"09-123 ES Forum.xls"
Kada sledeći put otvaramo tako sačuvani fajl, procedura prilikom zatvaranja proverava naziv fajla i preskače sve ostale provere.
Ukoliko je sadržaj fajla menjan, ugrađena excelova procedura će ponuditi da se sačuvaju izmene...
PS
U samom templejtu kod otvaranja fajla postoji forma za unos podataka...
[att_img]