この記事では、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講座が表示されます。
-
【初心者向け】パワークエリ入門:ETLツールを使ってエクセルデータを簡単に整形・統合しよう!(1/11)
-
【実践ガイド】パワークエリでデータ収集:Excel、CSV、PDF、Webデータを簡単に取り込む方法をマスターしよう!(2/11)
-
【総力特集】パワークエリで列操作をマスター:選択、変更、移動、削除、結合、分割の詳細解説&実践テクニック!(3/11)
-
【徹底解説】パワークエリで行操作をマスター!フィルター・保持・削除テクニックと練習用エクセルで実践学習(4/11)
-
パワークエリでデータクレンジング: 文字列結合、0埋め、テキスト関数をマスター(5/11)
-
パワークエリで四捨五入、切り捨て、切り上げをマスターする方法(6/11)
-
パワークエリで効率的なデータグループ化を実現する方法(7/11)
-
パワークエリで時間と日付の計算をマスター!便利な関数を使って効率アップ(8/11)
-
パワークエリで条件別集計をマスターする方法(9/11)
-
Excelパワークエリでクロス集計表とデータベース形式を瞬時に変換する方法(10/11)
-
Excelパワークエリ入門: 効率的なデータ整理をマスターしよう!(11/11)
パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください
コメント