Excel VBAで特定のキーワードを含むファイルのバックアップを自動化する方法

この記事では、Excel VBAを使用して特定のキーワードを含むファイルのみをバックアップする方法について詳しく解説します。初心者でも理解しやすいように具体的なコード例とその解説、そしてさらなる応用例を含めています。

目次

Excel VBAの基本

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

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

特定のキーワードを含むファイルのバックアップとは

特定のキーワードを含むファイルを選択し、別の場所にバックアップを取る操作のことを指します。Excel VBAを使用すると、このような作業を自動化し、一貫性を保ちながら効率的に作業を進めることが可能になります。

基本コードの実装


Sub BackupSpecificFiles()
    Dim SourceFolder As String, DestFolder As String
    Dim FileName As String
    Dim Keyword As String
    ' 検索するフォルダと保存先のフォルダを指定
    SourceFolder = "C:\Example\Source\"
    DestFolder = "C:\Example\Backup\"
    Keyword = "特定キーワード"
    ' 検索フォルダ内の最初のファイル名を取得
    FileName = Dir(SourceFolder & "*.*")
    ' ファイルがなくなるまでループ
    Do While FileName <> ""
        ' ファイル名にキーワードが含まれているかを確認
        If InStr(FileName, Keyword) > 0 Then
            FileCopy SourceFolder & FileName, DestFolder & FileName
        End If
        ' 次のファイル名を取得
        FileName = Dir
    Loop
End Sub

コードの詳細解説

1. `SourceFolder`と`DestFolder`には、検索するフォルダとバックアップ先のフォルダのパスをそれぞれ指定します。
2. `Keyword`にはバックアップしたいファイルに含まれているキーワードを指定します。
3. `Dir`関数を使用して、指定したフォルダ内の最初のファイル名を取得します。
4. `Do While`ループを使用して、ファイルがなくなるまでループ処理を行います。
5. `InStr`関数を使用して、ファイル名にキーワードが含まれているかを確認します。含まれていれば、`FileCopy`関数を使用してファイルをバックアップします。

応用例

1. 複数のキーワードでの検索

ファイル名が複数のキーワードのいずれかを含む場合にバックアップする方法。


Sub BackupMultipleKeywords()
    ' (省略)
    Dim Keywords As Variant
    Keywords = Array("キーワード1", "キーワード2", "キーワード3")
    
    ' (省略)
    
    For Each k In Keywords
        If InStr(FileName, k) > 0 Then
            FileCopy SourceFolder & FileName, DestFolder & FileName
            Exit For
        End If
    Next k
    ' (省略)
End Sub

2. バックアップの日付付きフォルダ作成

バックアップを取る際に、その日の日付でフォルダを自動作成し、そこにバックアップを保存する方法。


Sub BackupWithDate()
    ' (省略)
    Dim TodayFolder As String
    TodayFolder = DestFolder & Format(Date, "yyyy-mm-dd") & "\"
    If Dir(TodayFolder, vbDirectory) = "" Then
        MkDir TodayFolder
    End If

    If InStr(FileName, Keyword) > 0 Then
        FileCopy SourceFolder & FileName, TodayFolder & FileName
    End If
    ' (省略)
End Sub

3. キーワード一覧を外部ファイルから読み込む

キーワード一覧を外部のテキストファイルから読み込む方法。


Sub BackupFromExternalKeywordFile()
    ' (省略)
    Dim fso As Object, txtFile As Object
    Dim Line As String, Keywords() As String, i As Integer

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set txtFile = fso.OpenTextFile("C:\Example\Keywords.txt", 1)
    
    Do Until txtFile.AtEndOfStream
        Line = txtFile.ReadLine
        ReDim Preserve Keywords(i)
        Keywords(i) = Line
        i = i + 1
    Loop
    txtFile.Close

    ' 以降、先ほどの複数キーワード検索と同様の処理
    ' (省略)
End Sub

まとめ

Excel VBAを使用して特定のキーワードを含むファイルのみをバックアップする方法について学びました。基本的なコードの他、複数キーワードでの検索や日付ごとのバックアップ、外部ファイルからのキーワード取得といった応用的な事例を通じて、VBAの強力な自動化の可能性を感じることができます。これを機に、Excel VBAを活用して効率的な

業務処理を目指してみてください。

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

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

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

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

コメント

コメントする

目次