Zapisz kopię zapasową skoroszytu za pomocą VBA w programie Microsoft Excel

Anonim

Należy wykonywać kopie zapasowe danych w regularnych odstępach czasu, ponieważ każda niewłaściwa modyfikacja przez innego użytkownika lub przypadkowe usunięcie pliku Excel może zmarnować wiele czasu i informacji.

W tym artykule omówimy, jak wykonać kopię zapasową pliku Excel za pomocą VBA.

W tym artykule omówimy dwa różne sposoby wykonywania kopii zapasowej za pomocą kodu VBA. Napisaliśmy dwa makra do wykonywania kopii zapasowej pliku Excel.

Makro „SaveWorkbookBackup” utworzy kopię zapasową pliku Excel z rozszerzeniem „.bak” w tym samym folderze, w którym zapisany jest aktywny skoroszyt.

Makro „SaveWorkbookBackupToFloppy” utworzy kopię aktywnego skoroszytu na dysku D, który będzie działał jako plik kopii zapasowej aktywnego skoroszytu.

Wyjaśnienie kodu

Jeśli nie w porządku, to

MsgBox "Kopia zapasowa nie została zapisana!", vbExclamation, ThisWorkbook.Name

Zakończ, jeśli

Powyższy kod służy do wyświetlania komunikatu o błędzie, gdy podczas wykonywania makra wystąpi błąd wykonania.

Jeśli AWB.Path = "" Wtedy

'Wyświetlanie okna dialogowego Zapisz jako w celu zapisania pliku

Application.Dialogs(xlDialogSaveAs).Show

Powyższy kod służy do wyświetlania okna dialogowego Zapisz jako, jeśli plik nie został zapisany przed wykonaniem kopii zapasowej pliku.

Proszę postępować zgodnie z poniższym kodem!

 Option Explicit Sub SaveWorkbookBackup() Dim AWB As Workbook, BackupFileName As String, i As Integer, Ok As Boolean W przypadku błędu GoTo NotAbleToSave Set AWB = ActiveWorkbook 'Przypisz pełną ścieżkę pliku wzdłuż nazwy pliku do zmiennej BackupFileName BackupFileName = AWB.FullName 'Sprawdzanie, czy plik jest zapisywany 'Jeżeli plik nie jest zapisany, zapisuje plik If AWB.Path = "" Then 'Wyświetlanie okna dialogowego Zapisz jako do zapisywania pliku Application.Dialogs(xlDialogSaveAs).Show Else 'Usuwanie rozszerzenia pliku z nazwy pliku i = 0 While InStr(i + 1, BackupFileName, ".") > 0 'Znajdź rozszerzenie pliku i = InStr(i + 1, BackupFileName, ".") Wend If i > 0 Then BackupFileName = Left(BackupFileName, i - 1) 'Dodawanie rozszerzenia kopii zapasowej ".bak" o nazwie pliku BackupFileName = BackupFileName & ".bak" Ok = False With AWB .Save 'Tworzenie kopii zapasowej pliku .SaveCopyAs BackupFileName Ok = True End With End If NotAbleToSave: 'Kod obsługi błędów Set AWB = Nic, jeśli nie jest w porządku, to MsgBox "Kopia zapasowa nie została zapisana!", vbExclamation, ThisWork book.Name End If Sub Sub SaveWorkbookBackupToFloppy() Dim AWB As Workbook, BackupFileName As String, i As Integer, Ok As Boolean Dim DriveName As String On Error GoTo NotAbleToSave 'Określ ścieżkę do wykonania kopii zapasowej na dysku D DriveName = "D :\" 'Inicjalizacja zmiennych Set AWB = ActiveWorkbook BackupFileName = AWB.Name Ok = False 'Sprawdzanie, czy plik jest zapisywanie pliku Application.Dialogs(xlDialogSaveAs).Show Else 'Usuwanie pliku, jeśli plik kopii zapasowej już istnieje If Dir(NazwaDysku i NazwaPlikuKopiaZapasowa) "" Then Kill DriveName & BackupFileName End If With AWB .Save 'Tworzenie pliku kopii zapasowej Ok = True End with End If NotAbleToSave: 'Kod obsługi błędów Set AWB = Nic, jeśli nie jest OK, to MsgBox "Kopia zapasowa nie została zapisana!", vbExclamation, ThisWorkbook.Name End If End Sub 

Jeśli podobał Ci się ten blog, podziel się nim ze znajomymi na Facebooku. Możesz również śledzić nas na Twitterze i Facebooku.

Chcielibyśmy usłyszeć od Ciebie, daj nam znać, jak możemy poprawić naszą pracę i uczynić ją lepszą dla Ciebie. Napisz do nas na stronie e-mail