Excel VBAを利用した特定キーワードを含むファイルの自動移動方法

この記事では、Excel VBAを使用して、特定のキーワードを含むファイル名を持つファイルを別のフォルダに自動的に移動する方法を紹介します。Excel VBAを使うことで、日常の作業を自動化し、生産性を向上させることができます。具体的なコードの提供と、その詳細な解説、さらには応用例を通じて、VBAの魅力と可能性をお伝えします。

目次

Excel VBAの基本

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

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

基本コードの作成

Excel VBAを使って特定のキーワードが含まれるファイル名を判別し、それを別のフォルダに移動する基本的なコードを以下に示します。


Sub MoveFilesWithKeyword()
    Dim SourceFolder As String
    Dim DestFolder As String
    Dim FileName As String
    Dim Keyword As String
    SourceFolder = "C:\YourSourcePath\"  'ソースフォルダのパス
    DestFolder = "C:\YourDestinationPath\" '移動先のフォルダのパス
    Keyword = "YourKeyword"  '特定のキーワード
    FileName = Dir(SourceFolder & "*.*")
    Do While FileName <> ""
        If InStr(1, FileName, Keyword) > 0 Then
            FileCopy SourceFolder & FileName, DestFolder & FileName
            Kill SourceFolder & FileName
        End If
        FileName = Dir
    Loop
End Sub

コードの詳細解説

このコードは、指定したソースフォルダ内のファイルを一つずつチェックし、ファイル名にキーワードが含まれている場合、目的のフォルダにそのファイルを移動します。

– `Dir`関数: ソースフォルダ内の最初のファイル名を取得します。
– `InStr`関数: ファイル名内に指定したキーワードが存在するかどうかを確認します。
– `FileCopy`: ファイルをコピーします。
– `Kill`: ソースフォルダ内の元のファイルを削除します。

応用例1: 複数のキーワードでのファイル移動

この応用例では、複数のキーワードを使ってファイルを判別し、それぞれのキーワードに応じて異なるフォルダにファイルを移動します。


Sub MoveFilesWithMultipleKeywords()
    Dim SourceFolder As String
    Dim DestFolder1 As String, DestFolder2 As String
    Dim FileName As String
    Dim Keyword1 As String, Keyword2 As String
    SourceFolder = "C:\YourSourcePath\"
    DestFolder1 = "C:\YourDestinationPath1\"
    DestFolder2 = "C:\YourDestinationPath2\"
    Keyword1 = "Keyword1"
    Keyword2 = "Keyword2"
    FileName = Dir(SourceFolder & "*.*")
    Do While FileName <> ""
        If InStr(1, FileName, Keyword1) > 0 Then
            FileCopy SourceFolder & FileName, DestFolder1 & FileName
            Kill SourceFolder & FileName
        ElseIf InStr(1, FileName, Keyword2) > 0 Then
            FileCopy SourceFolder & FileName, DestFolder2 & FileName
            Kill SourceFolder & FileName
        End If
        FileName = Dir
    Loop
End Sub

応用例2: ログファイルの作成

この応用例では、移動したファイルのリストをログファイルに記録します。これにより、どのファイルが移動されたのかを後から確認できます。


Sub MoveFilesWithLog()
    Dim SourceFolder As String
    Dim DestFolder As String
    Dim LogFile As String
    Dim FileName As String
    Dim Keyword As String
    Dim fso As Object
    Dim logStream As Object
    SourceFolder = "C:\YourSourcePath\"
    DestFolder = "C:\YourDestinationPath\"
    Keyword = "YourKeyword"
    LogFile = "C:\YourLogPath\Log.txt"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set logStream = fso.OpenTextFile(LogFile, 8, True)
    FileName = Dir(SourceFolder & "*.*")
    Do While FileName <> ""
        If InStr(1, FileName, Keyword) > 0 Then
            FileCopy SourceFolder & FileName, DestFolder & FileName
            logStream.WriteLine "Moved: " & FileName & " at " & Now
            Kill SourceFolder & FileName
        End If
        FileName = Dir
    Loop
    logStream.Close
    Set fso = Nothing
End Sub

応用例3: ファイルの移動履歴をExcelに記録

この応用例では、移動したファイルの情報をExcelのシートに記録します。これにより、移動の履歴をExcelで管理することができます。


Sub MoveFilesWithExcelLog()
    Dim SourceFolder As String
    Dim DestFolder As String
    Dim FileName As String
    Dim Keyword As String
    Dim LastRow As Long
    Dim wb As Workbook
    Dim ws As Worksheet
    SourceFolder = "C:\YourSourcePath\"
    DestFolder = "C:\YourDestinationPath\"
    Keyword = "YourKeyword"
    Set wb = ThisWorkbook
    Set ws = wb.Sheets("Log")
    FileName = Dir(SourceFolder & "*.*")
    Do While FileName <> ""
        If InStr(1, FileName, Keyword) > 0 Then
            FileCopy SourceFolder & FileName, DestFolder & FileName
            LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1
            ws.Cells(L
astRow, 1).Value = FileName
            ws.Cells(LastRow, 2).Value = Now
            Kill SourceFolder & FileName
        End If
        FileName = Dir
    Loop
End Sub

まとめ

Excel VBAを利用することで、特定のキーワードを持つファイル名のファイルを自動で別のフォルダに移動することができます。このような日常の作業の自動化は、作業の効率を大幅に向上させることができます。本記事で紹介した基本的なコードや応用例を参考に、自身のニーズに合わせた自動化の仕組みを構築してみてください。

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

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

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

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

コメント

コメントする

目次