Excel VBAでの即時ファイル・フォルダバックアップの実現方法

この記事では、Excel VBAを用いて、ファイルやフォルダの変更を検知し、それに基づいて即時にバックアップを行う方法について詳しく説明します。具体的なコード例、その詳細解説、そして応用例を含めて、初心者から中級者までの方々が理解しやすいように取り組んでいます。

目次

Excel VBAの基本

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

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

基本的なバックアップ処理の考え方

Excel VBAを用いてファイルやフォルダの変更を検知し、即時にバックアップを取るための処理は、以下のステップで構成されます。
1. 変更を検知する
2. 検知した変更を元にバックアップ処理を実行する


Sub BackupWhenModified()
    Dim WatchFolder As String
    Dim BackupFolder As String
    Dim ModifiedFile As String
    
    ' 監視するフォルダのパス
    WatchFolder = "C:\Path\To\Watch\Folder\"
    
    ' 変更を検知した場合のバックアップ先
    BackupFolder = "C:\Path\To\Backup\Folder\"
    ' フォルダ内の変更を検知する
    ModifiedFile = DetectChange(WatchFolder)
    
    If ModifiedFile <> "" Then
        ' バックアップ処理
        FileCopy ModifiedFile, BackupFolder & "\" & Dir(ModifiedFile)
    End If
End Sub

コードの詳細解説

上記のコードは、特定のフォルダ内でのファイルの変更を検知し、変更が検知された場合にそのファイルをバックアップするためのものです。`DetectChange`関数は、変更を検知するためのユーザー定義関数として想定しています。この関数は変更が検知されたファイルのフルパスを返すように設計します。

応用例1: 特定の拡張子のファイルのみをバックアップ

特定の拡張子を持つファイルだけをバックアップするようにコードを変更することができます。例えば、`.xlsx`と`.xlsm`のみをバックアップする場合、以下のようなコードになります。


Sub BackupSpecificExtension()
    ' 他のコードは省略...
    
    If Right(ModifiedFile, 5) = ".xlsx" Or Right(ModifiedFile, 6) = ".xlsm" Then
        FileCopy ModifiedFile, BackupFolder & "\" & Dir(ModifiedFile)
    End If
End Sub

応用例2: バックアップ先を日付ごとのフォルダにする

バックアップ先のフォルダを、その日の日付に基づいて新しく生成することで、日付ごとのバックアップを整理することができます。


Sub BackupWithDateFolder()
    ' 他のコードは省略...
    
    Dim DateFolder As String
    DateFolder = BackupFolder & "\" & Format(Now(), "yyyy-mm-dd")
    If Dir(DateFolder, vbDirectory) = "" Then
        MkDir DateFolder
    End If
    FileCopy ModifiedFile, DateFolder & "\" & Dir(ModifiedFile)
End Sub

応用例3: バックアップ時にログを生成

バックアップが行われるたびに、その情報をログとして保存することで、後からどのファイルがいつバックアップされたのかを確認することができます。


Sub BackupWithLog()
    ' 他のコードは省略...

    Dim LogFile As String
    LogFile = BackupFolder & "\backup_log.txt"
    Open LogFile For Append As #1
    Print #1, "Backed up: " & ModifiedFile & " at " & Now()
    Close #1
End Sub

まとめ

Excel VBAを利用して、ファイルやフォルダの変更を検知し、即時にバックアップを行う方法を学びました。基本的な処理から応用例までを取り上げ、さまざまなニーズに応じたカスタマイズのヒントも提供しました。この知識をベースに、自身の作業環境に合わせた自動化を実現し、より効率的な作業を目指してください。

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

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

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

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

コメント

コメントする

目次