Stránka 1 z 1
EXCEL - MAKRO - uložení se jménem...
Napsal: 19 bře 2013 10:32
od Miloš Nauš
Ahoj,
Jsem začáteční uživatel Maker v excelu a prosím o radu.
Potřeboval bych udělat makro, které by po ukončení excelu dokument uložilo jako nový dokument do stejné složky a v jeho názvu bylo jméno uživatele a datum změny, který tento dokument změnil. Děkuji za radu.
Re: EXCEL - MAKRO - uložení se jménem...
Napsal: 19 bře 2013 14:38
od Jjg
V příloze je nástin makra (v modulech Module1 a ThisWorkbook).
Funkce název NázevSouboru v Module1 sestaví Vámi požadovaný název souboru,
událostní procedura Workbook_BeforeClose uloží soubor při ukončení Excelu.
Nevím, s jakým záměrem podobné makro tvoříte - přílohu můžete použít prakticky jen jako jednoduchou ukázku a myslím, že si na tom ještě "zamakáte".
Zkoušeno v Excelu 2007, Windows XP
Re: EXCEL - MAKRO - uložení se jménem...
Napsal: 19 bře 2013 14:47
od Miloš Nauš
Mockrát děkuji vyzkouším .
Zmíněné marko má sloužit ke zjištění, jáký uživatel soubor otevřel a změnil (uložil). Přičemž se zabrání Přemazání staršího souboru.
Re: EXCEL - MAKRO - uložení se jménem...
Napsal: 19 bře 2013 15:01
od Jjg
No, Váš záměr zní jednoduše, ale jak jsem psal výše, ještě si zapracujete - ten můj "nástin" makra řeši jen zápis při ukončení samotného Excelu (jak jste uvedl v dotazu). Budete muset ošetřit další případy (např. příkazy "Uložit", "Uložit jako ... " během práce se souborem a další na něž přijdete možná až v praxi).
Re: EXCEL - MAKRO - uložení se jménem...
Napsal: 19 bře 2013 15:41
od Mirdad69
Zdravím,
také byste si měl uvědomit, že to vše se provede pouze v případě. že uživatel povolí makra.
Takže by možná chtělo, aby se makrem odemykal sešit/list.
Re: EXCEL - MAKRO - uložení se jménem...
Napsal: 19 bře 2013 18:13
od cmuch
To otevírání sešitu jsem řešil již
tu, jen chce trochu poupravit.
A ošetření možnosti Uložit jako... lze ošetřit takto
Kód: Vybrat vše
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True Then
MsgBox "Nelze udelat kopii!!"
Cancel = True
End
End If
End Sub
Pro uložení kopie sešitu bych použil toto
Kód: Vybrat vše
ActiveWorkbook.SaveCopyAs ThisWorkbook.Path & "\" & Format(Now, "yyyy-mm-dd-hh-mm") & "_" & Environ("UserName") & ".xlsm"
Re: EXCEL - MAKRO - uložení se jménem...
Napsal: 19 bře 2013 18:49
od Jjg
Vidím, že moje znalosti jsou sto let za opicemi (konečně, už jsem stařík), takže tu už se plantat nebudu. Ani jsem netušil, jak jde uživatele jednoduše zjistit.
Re: EXCEL - MAKRO - uložení se jménem...
Napsal: 26 bře 2013 13:25
od Miloš Nauš
velice děkuji za rady už to skoro celé funguje až na ukládání. Když chci uložit dokument => uložit jako tak to mi makro zakáže., ale bohužel při => Ulož (uložení rozepsaného souboru) se mi soubor uloží cemuž chci zabránit. :( Prosím tedy ještě o jednu radu děkuji. Toto jsem zatim dal dohromady.
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'při ukončení Ecelu
ActiveWorkbook.SaveCopyAs ThisWorkbook.Path & "\" & Format(Now, "yyyy-mm-dd-hh-mm") & "_" & Environ("UserName") & ".xlsm"
End Sub
Private Sub Workbook_BeforeSave(ByVal Save As Boolean, Cancel As Boolean)
If Save = True Then
MsgBox "Nelze udelat kopii!!"
Cancel = True
End
End If
End Sub
Private Sub Workbook_BeforeXmlExport(ByVal Map As XmlMap, ByVal Url As String, Cancel As Boolean)
End Sub
--- Doplnění předchozího příspěvku (26 Bře 2013 13:30) ---
A to samé mi dělá problém při uzavření dokumentu. Dokument se mi sice vytvoří jak potřebuji a uloží , ale nevim jak přerušit vyskočení "hlášky" jestli chci změny v souboru uložit Jelikož když zvolim ANO tak se mi zdrojový soubor přeuloží.
--- Doplnění předchozího příspěvku (26 Bře 2013 13:34) ---
A to samé mi dělá problém při uzavření dokumentu. Dokument se mi sice vytvoří jak potřebuji a uloží , ale nevim jak přerušit vyskočení "hlášky" jestli chci změny v souboru uložit Jelikož když zvolim ANO tak se mi zdrojový soubor přeuloží.
Re: EXCEL - MAKRO - uložení se jménem...
Napsal: 27 bře 2013 07:05
od cmuch
Tak vyzkoušej toto: (vše patří do thisworkbook)
Kód: Vybrat vše
Option Explicit
Dim Zavri As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'při ukončení Ecelu
' pokud je ukonceni a ulozeni - zavri
If Zavri = True Then
Exit Sub
End If
' ulozi kopii souboru jako
ActiveWorkbook.SaveCopyAs ThisWorkbook.Path & "\" & Format(Now, "yyyy-mm-dd-hh-mm") & "_" & Environ("UserName") & ".xlsm"
Zavri = True ' nastavi ukonceni
ActiveWorkbook.Save ' ulozi soubor a zavře ho
End Sub
Private Sub Workbook_BeforeSave(ByVal Save As Boolean, Cancel As Boolean)
' pokud se ma sesit zavrit, ulož
If Zavri = False Then
MsgBox "Soubor se uloží při zavření !!"
Cancel = True ' zakáže uložení
End If
End Sub
Re: EXCEL - MAKRO - uložení se jménem...
Napsal: 28 bře 2013 08:10
od Miloš Nauš
Mockrát děkuji vše funguje jak má. Profíci se poznají

--- Doplnění předchozího příspěvku (28 Bře 2013 11:00) ---
Tak ještě malá chybička :(
při zavření sice nevyskočí hláška jestli chci daný dokument uloži, ale soubor se mi uloží sám. Tomu chci zabránit aby se změny uložili do kopie (což funguje skvěle) a ne aby se mi přepsal zdroj. Děkuju
Re: EXCEL - MAKRO - uložení se jménem...
Napsal: 28 bře 2013 12:49
od cmuch
Sice tomu moc nerozumím, proč se nemá uložit soubor.
Tak pak takto
Kód: Vybrat vše
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'při ukončení Ecelu
' ulozi kopii souboru jako
ActiveWorkbook.SaveCopyAs ThisWorkbook.Path & "\" & Format(Now, "yyyy-mm-dd-hh-mm") & "_" & Environ("UserName") & ".xlsm"
' a zavře ho beze změn
ActiveWorkbook.Close SaveChanges:=False
End Sub
Private Sub Workbook_BeforeSave(ByVal Save As Boolean, Cancel As Boolean)
MsgBox "Soubor nelze uložit !!"
Cancel = True ' zakáže uložení
End Sub