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