この記事では、Excel VBAを使用して、特定のキーワードを含むファイル名を持つファイルを別のフォルダに自動的に移動する方法を紹介します。Excel VBAを使うことで、日常の作業を自動化し、生産性を向上させることができます。具体的なコードの提供と、その詳細な解説、さらには応用例を通じて、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を利用することで、特定のキーワードを持つファイル名のファイルを自動で別のフォルダに移動することができます。このような日常の作業の自動化は、作業の効率を大幅に向上させることができます。本記事で紹介した基本的なコードや応用例を参考に、自身のニーズに合わせた自動化の仕組みを構築してみてください。
コメント