Excel VBAを使用したディレクトリ構造のバックアップ方法

この記事では、Excel VBAを利用して特定のディレクトリ構造を保持したままのバックアップを取る方法について詳しく説明します。初心者から中級者まで理解しやすいように具体的なコード例、その詳細解説、さらに実践的な応用例を含めて解説しています。

目次

Excel VBAの基本

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

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

Excel VBAを利用したディレクトリ構造のバックアップ

Excel VBAを利用すれば、手動で行っていた複雑な作業も自動化することが可能です。今回は、特定のディレクトリ構造を保持しながらのバックアップを取る方法について考えてみましょう。


Sub BackupWithDirectoryStructure()
    Dim sourcePath As String, destPath As String
    Dim fso As Object
    
    sourcePath = "C:\YourSourcePath"  ' ソースディレクトリを指定
    destPath = "C:\YourDestinationPath" ' バックアップ先のディレクトリを指定
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.CopyFolder sourcePath, destPath
End Sub

コードの詳細解説

1. **sourcePath**と**destPath**変数を用意して、それぞれバックアップの元となるディレクトリ、バックアップ先のディレクトリのパスを指定します。
2. **fso**というオブジェクトを作成し、このオブジェクトを利用してファイルやディレクトリの操作を行います。
3. **fso.CopyFolder**メソッドを利用して、指定したディレクトリのバックアップを取ります。

注意点

– バックアップ先のディレクトリが存在しない場合、新たに作成されます。
– 既に同名のディレクトリやファイルが存在する場合、上書きされますので注意が必要です。

応用例

1. 一定期間ごとの自動バックアップ

定期的にバックアップを取る場合、VBAのタイマー機能を利用して、指定した間隔でバックアップを取るようにすることができます。


Sub ScheduledBackup()
    Application.OnTime Now + TimeValue("00:10:00"), "BackupWithDirectoryStructure"
End Sub

解説

このコードは10分ごとに`BackupWithDirectoryStructure`プロシージャを実行します。

2. 特定のファイルのみをバックアップ

特定の拡張子を持つファイルのみをバックアップする場合、以下のようにコードを修正できます。


Sub BackupSpecificFiles()
    Dim sourcePath As String, destPath As String
    Dim fso As Object, folder As Object, file As Object
    
    sourcePath = "C:\YourSourcePath"
    destPath = "C:\YourDestinationPath"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(sourcePath)
    
    For Each file In folder.Files
        If Right(file.Name, 4) = ".txt" Then ' .txtファイルのみをバックアップ
            file.Copy destPath & "\" & file.Name
        End If
    Next file
End Sub

解説

フォルダ内の全てのファイルを走査し、拡張子が.txtのもののみをバックアップ先にコピーします。

3. バックアップのログを残す

バックアップの履歴を残したい場合、以下の方法で実現できます。


Sub BackupWithLog()
    Dim sourcePath As String, destPath As String, logPath As String
    Dim fso As Object, logFile As Object
    
    sourcePath = "C:\YourSourcePath"
    destPath = "C:\YourDestinationPath"
    logPath = "C:\BackupLog.txt"  ' ログファイルのパスを指定
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.CopyFolder sourcePath, destPath
    
    ' ログの記録
    Set logFile = fso.OpenTextFile(logPath, 8, True)
    logFile.WriteLine "Backup completed at " & Now
    logFile.Close
End Sub

解説

バックアップ完了時にログファイルに現在の日時を書き込みます。

まとめ

Excel VBAを利用することで、日常の作業を効率化することができます。上記の方法を参考に、独自のバックアップ方法を構築してみてください。

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

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

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

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

コメント

コメントする

目次