Excel shranjevanje (z datumom/časom v imenu datoteke)
Excel shranjevanje (z datumom/časom v imenu datoteke)
Kako bi se ob vsakokratnem shranjevanju (Alt-F-S) datoteka - brez intervencije uporabnika - shranila z imenom, ki bi vsebovalo poleg (le prvič vpisanega) fiksnega dela imena še variabilni del z navedbo časa zapiranja (npr. TABELA_yyyymmddhhmmss).
Ali pa - alternativno (glede na to, da se datum hranjenja itak beleži kot samostojno polje) - da bi se datoteka shranjevala vedno pod istim imenom, vendar NE BI "povozila" predhodnih datotek z istim imenom.
Idealno bi bilo, da bi se ob tem (celotna) datoteka šla še v status "protect sheet - all cells locked".
Ali pa - alternativno (glede na to, da se datum hranjenja itak beleži kot samostojno polje) - da bi se datoteka shranjevala vedno pod istim imenom, vendar NE BI "povozila" predhodnih datotek z istim imenom.
Idealno bi bilo, da bi se ob tem (celotna) datoteka šla še v status "protect sheet - all cells locked".
Koda: Izberi vse
Sub Shrani()
Dim list As Worksheet
For Each list In ThisWorkbook.Sheets
list.Protect "geslo"
Next
ThisWorkbook.SaveAs "FiksenDelImena" & "TABELA_" & Year(Date) & "-" & Month(Date) & "-" & Day(Date) & "+" & Hour(Time) & "-" & Minute(Time) & "-" & Second(Time), xlNormal
End Sub
[img]http://shrani.si/f/3t/YL/4W2P37B9/office.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]
Hmm, tole mi pa ne dela... Kot ste me naučili v sosednji temi, sem kodo shranil (alt-F11, "zalepi" v worksheet_1)... ampak mi ne naredi čisto nič. Kje ga lomim ?
(ali je mogoče izvesti tudi na drugi način... da datoteka (bez spreminjanja imena) ob hranjenju ne bi "povozila" prehodne... tako bi imel več datotek z istim imenom, a z različnimi datumi hranjenja).
(ali je mogoče izvesti tudi na drugi način... da datoteka (bez spreminjanja imena) ob hranjenju ne bi "povozila" prehodne... tako bi imel več datotek z istim imenom, a z različnimi datumi hranjenja).
Kljuka13 vam je napisal funkcijo, ki bo željeno delo opravila, če jo pokličete. Torej če izberete Orodja/Makri/Zaženi in funkcijo izvedete, boste s tem zvezek shranili pod novim imenom - imenu bo dodan datum.
Ker pa vi želite, da se to zgodi avtomatično ob vsakem shranjevanju, torej ko pritisnete CTRL+S ali Datoteka/Shrani, pa morate to kodo tam tudi izvesti. Odprite torej VBA urejevalnik ter pod ThisWorkbook skopirajte sledečo programsko kodo:
Ker pa vi želite, da se to zgodi avtomatično ob vsakem shranjevanju, torej ko pritisnete CTRL+S ali Datoteka/Shrani, pa morate to kodo tam tudi izvesti. Odprite torej VBA urejevalnik ter pod ThisWorkbook skopirajte sledečo programsko kodo:
Koda: Izberi vse
Option Explicit
Sub Shrani()
Dim list As Worksheet
For Each list In ThisWorkbook.Sheets
list.Protect "geslo"
Next
ThisWorkbook.SaveAs "FiksenDelImena" & "TABELA_" & Year(Date) & "-" & _
Month(Date) & "-" & Day(Date) & "+" & Hour(Time) & _
"-" & Minute(Time) & "-" & Second(Time), xlNormal
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Shrani
End Sub
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
Hja. Poskusite debuggirati kodo. Odprite VBA. Nato pa kliknite pred vrstico
list.Protect "geslo"
na tisti visok sivi trak ob robu. Prikazala se bo rdeča pika. Tukaj se bo poganjanje makra delno zaustavilo. Potem kliknite še pred vrstico
ThisWorkbook.SaveAs
Sedaj poženite makro. Najprej se bo rumeno obarvala vrstica list.Protect ... Kliknite F5. Če se izvajanje nadaljuje pomeni, da je problem pri shranjevanju. Tukaj pa nimam pametne ideje za izboljšanje.
list.Protect "geslo"
na tisti visok sivi trak ob robu. Prikazala se bo rdeča pika. Tukaj se bo poganjanje makra delno zaustavilo. Potem kliknite še pred vrstico
ThisWorkbook.SaveAs
Sedaj poženite makro. Najprej se bo rumeno obarvala vrstica list.Protect ... Kliknite F5. Če se izvajanje nadaljuje pomeni, da je problem pri shranjevanju. Tukaj pa nimam pametne ideje za izboljšanje.
[img]http://shrani.si/f/3t/YL/4W2P37B9/office.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]
...po tem, ko "porumenim" vrstico LIST.PROTECT "GESLO" moram 3x pritisniti F5, da se "porumeni" "THIS WORKBOOK SAVE AS" vrstica. Ko pa še naslednjič pritisnem F5, pa Excel spet javi "MS Excel has encountered a problem..."
Očitno prihaja do nekakšnega dvojnega shranjevanja. Ko namreč to funkcijo skopiram v čisto svežo Excel datoteko in pritisnem altF_S za hranjenje, mi odpre okno za shranjevanje (Save As...), kjer je ta datoteka (s pravilno pripetim datumom) že shranjena. Zanimivo pa je, da pri nadaljnjih hranjenjih tega okna (Save As..) ne prikazuje več, ampak se takoj upre "MS Excel has encountered a problem..."
Očitno prihaja do nekakšnega dvojnega shranjevanja. Ko namreč to funkcijo skopiram v čisto svežo Excel datoteko in pritisnem altF_S za hranjenje, mi odpre okno za shranjevanje (Save As...), kjer je ta datoteka (s pravilno pripetim datumom) že shranjena. Zanimivo pa je, da pri nadaljnjih hranjenjih tega okna (Save As..) ne prikazuje več, ampak se takoj upre "MS Excel has encountered a problem..."
Res bo kar pravite... Excel pade v neskončno zanko... ampak ne bom vam sedaj razlagal tega
. Zamenjajte funkcijo Workbook_BeforeSave s spodnjo:
Koda: Izberi vse
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
On Error GoTo konec:
Cancel = True
Application.EnableEvents = False
Shrani
konec:
Application.EnableEvents = True
End Sub
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
Hja. Pa res. Namreč, ko vi shranite on požene makro Shrani. Makro potem želi shraniti dokument in spet se pokliče makro Shrani ... 
[img]http://shrani.si/f/3t/YL/4W2P37B9/office.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]