この記事では、Excel VBAを活用して、差分バックアップを実施する方法について詳しく説明します。初心者向けに、具体的なコード例とその解説、応用例を含めて取り上げます。
目次
差分バックアップとは
差分バックアップは、前回のフルバックアップ以降の変更されたデータだけをバックアップする方法です。この手法により、データ量を削減し、バックアップ時間を短縮することができます。
Excel VBAを活用した差分バックアップの手順
基本的なコード
Sub DifferentialBackup()
Dim OriginalFile As String
Dim BackupFile As String
Dim LastBackupDate As Date
'元のファイルとバックアップファイルのパス
OriginalFile = "C:\path\to\original.xlsx"
BackupFile = "C:\path\to\backup.xlsx"
'前回のバックアップ日時を取得
LastBackupDate = FileDateTime(BackupFile)
'元のファイルの最終更新日時が前回のバックアップ以降であれば、バックアップを実施
If FileDateTime(OriginalFile) > LastBackupDate Then
FileCopy OriginalFile, BackupFile
End If
End Sub
このコードは、元のファイルの最終更新日時を確認し、前回のバックアップ以降であれば新たなバックアップを実施します。
応用例1: 複数のファイルを差分バックアップ
Sub MultiFileDifferentialBackup()
Dim FilesToBackup(1 To 3) As String
Dim BackupDestinations(1 To 3) As String
Dim i As Integer
'バックアップ対象のファイル
FilesToBackup(1) = "C:\path\to\original1.xlsx"
FilesToBackup(2) = "C:\path\to\original2.xlsx"
FilesToBackup(3) = "C:\path\to\original3.xlsx"
'バックアップ先
BackupDestinations(1) = "C:\path\to\backup1.xlsx"
BackupDestinations(2) = "C:\path\to\backup2.xlsx"
BackupDestinations(3) = "C:\path\to\backup3.xlsx"
For i = 1 To 3
If FileDateTime(FilesToBackup(i)) > FileDateTime(BackupDestinations(i)) Then
FileCopy FilesToBackup(i), BackupDestinations(i)
End If
Next i
End Sub
応用例2: フォルダ単位での差分バックアップ
補足: この例では、Folder1内のすべてのExcelファイルをFolder2にバックアップします。
Sub FolderDifferentialBackup()
Dim OriginalFolder As String
Dim BackupFolder As String
Dim FileInFolder As String
OriginalFolder = "C:\path\to\Folder1\"
BackupFolder = "C:\path\to\Folder2\"
FileInFolder = Dir(OriginalFolder & "*.xlsx")
Do While FileInFolder <> ""
If FileDateTime(OriginalFolder & FileInFolder) > FileDateTime(BackupFolder & FileInFolder) Then
FileCopy OriginalFolder & FileInFolder, BackupFolder & FileInFolder
End If
FileInFolder = Dir
Loop
End Sub
応用例3: バックアップのロギング
補足: バックアップを実施する度にログをExcelのシートに追記する方法。
Sub BackupWithLogging()
Dim OriginalFile As String
Dim BackupFile As String
Dim LastBackupDate As Date
Dim ws As Worksheet
'ロギング用のシートを設定
Set ws = ThisWorkbook.Sheets("Log")
OriginalFile = "C:\path\to\original.xlsx"
BackupFile = "C:\path\to\backup.xlsx"
LastBackupDate = FileDateTime(BackupFile)
If FileDateTime(OriginalFile) > LastBackupDate Then
FileCopy OriginalFile, BackupFile
ws.Cells(ws.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Date & " " & Time & ": Backup Successful for " & OriginalFile
End If
End Sub
まとめ
Excel VBAを使用することで、差分バックアップの自動化が容易になります。上記の基本的な手法と応用例を組み合わせることで、さまざまなシチュエーションに適応するバックアップスクリプトを作成することができます。データの安全性を保つために、定期的なバックアップを習慣化しましょう。
コメント