Otevři Excelový dokument, na který chceš vytvářet zálohu a přejdi do prostředí VBA (kl.zkratka
Alt+F11)
1. V panelu nalevo dvakrát klikni na
ThisWorkBook:

3. Do prázdného okna vlož toto makro:
[syntax lang=vb filename=makro.txt]
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call zaloha
End Sub
[/syntax]
4. V menu VBA:
Insert -->
Module5. Do prázdného okna vlož toto makro:
[syntax lang=vb filename=makro2.txt]
Sub zaloha()
Dim sesit As Workbook, BackupFileName As String, i As Integer, OK As Boolean
If TypeName(ActiveWorkbook) = "Nothing" Then Exit Sub
Set sesit = ActiveWorkbook
If sesit.Path = "" Then
Application.Dialogs(xlDialogSaveAs).Show
Else
BackupFileName = "zaloha.xls"
OK = False
On Error GoTo chyba
If Dir("c:\" & BackupFileName) <> "" Then
Kill "c:\" & BackupFileName
End If
With sesit
Application.StatusBar = "Vytvářím zálohu..."
.Save
Application.StatusBar = "Ukládám zálohu..."
.SaveCopyAs "c:\" & BackupFileName
OK = True
End With
End If
chyba:
Set sesit = Nothing
Application.StatusBar = False
If Not OK Then
MsgBox "Záloha nebyla vytvořena!", vbExclamation, ThisWorkbook.Name
End If
End Sub
[/syntax]
Prostředí VBA zavři klasicky křížkem v pravém horním rohu.
Nyní při každém uložení dokumentu bude vytvořena jeho záloha, která bude umístěna na
C:\Makro lze spustit kdykoliv budeš chtít, nejen tedy při ukládání. Spustíš ho klasicky ze seznamu maker (Alt+F8)
Také je zde možnost vytvářet zálohu po každé provedené změně v dokumentu. Stačí v událostní proceduře (první makro) změnit první řádek z
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) na
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range). Toto ale v případě velkých souborů nedoporučuji, protože může během vytváření zálohy docházet ke zpomalení práce. Určitě bys byl nerad, kdyby po každé změně si musel čekat třeba půl minuty než Excel vytvoří zálohu... To bys toho moc neudělal :) To bych se spíše přikláněl k tomu udělat makro, které by vytvářelo zálohu třeba každých 5-10 minut. To už se dá přežít
