Excel VBAを活用した古いバックアップデータの自動ローテーション方法

この記事では、Excel VBAを用いて、古いバックアップデータの自動ローテーションを実装する方法を詳しく紹介します。具体的なコードとその詳細な解説、さらには実用的な応用例までを網羅します。これにより、大量のバックアップデータを効率的に管理する手助けをすることを目指しています。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

基本的な自動ローテーションの実装

Excel VBAを使用して古いバックアップデータを自動的に削除する基本的な方法を見てみましょう。


Sub RotateBackupData()
    Dim FolderPath As String
    Dim file As String
    Dim LastModifiedDate As Date
    Dim DaysOld As Integer
    FolderPath = "C:\path\to\backup\folder"  'バックアップフォルダのパスを指定
    DaysOld = 30  '30日以上古いファイルを削除する
    file = Dir(FolderPath & "\*.*")
    Do While file <> ""
        LastModifiedDate = FileDateTime(FolderPath & "\" & file)
        If DateDiff("d", LastModifiedDate, Date) > DaysOld Then
            Kill FolderPath & "\" & file
        End If
        file = Dir
    Loop
End Sub

コードの詳細解説

このコードは、指定されたフォルダ内のすべてのファイルを調べ、最終変更日から30日以上経過している場合、そのファイルを削除します。

1. FolderPath: バックアップデータが格納されているフォルダのパスを指定します。
2. DaysOld: ファイルがこの日数以上古い場合、削除されます。この例では30日としています。
3. FileDateTime関数: ファイルの最終変更日時を取得します。
4. DateDiff関数: 二つの日付の差を計算します。ここでは最終変更日と現在の日付との差を計算しています。

応用例

1. 特定の拡張子のファイルのみを対象にする

バックアップフォルダ内の特定の拡張子を持つファイルだけを自動ローテーションの対象とすることができます。


...
file = Dir(FolderPath & "\*.bak")
...

この変更により、`.bak` の拡張子を持つファイルのみが削除の対象となります。

2. バックアップフォルダにログを作成

ローテーションを行った際に、その情報をログとして記録することも考えられます。


...
If DateDiff("d", LastModifiedDate, Date) > DaysOld Then
    Kill FolderPath & "\" & file
    AppendToLog(FolderPath & "\rotation_log.txt", file & " was deleted.")
End If
...

Sub AppendToLog(LogPath As String, Message As String)
    Dim fnum As Integer
    fnum = FreeFile()
    Open LogPath For Append As fnum
    Print #fnum, Date & " " & Time & ": " & Message
    Close fnum
End Sub

3. バックアップの頻度に応じて削除期限を変える

月次、週次、日次のバックアップが混在している場合など、ファイル名やパスに応じて削除期限を変えたい場合が考えられます。


...
If InStr(file, "monthly") > 0 Then
    DaysOld = 365  '月次の場合、365日保持
ElseIf InStr(file, "weekly") > 0 Then
    DaysOld = 90   '週次の場合、90日保持
Else
    DaysOld = 30   'その他の場合、30日保持
End If
...

まとめ

Excel VBAを使用することで、古いバックアップデータの自動ローテーションを効率的に行うことができます。この機能を活用することで、データの管理をより簡単かつ効果的に行うことができます。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次