この記事では、Excel VBAを利用して同じ内容の重複ファイルを削除する方法について詳しく解説します。初心者から中級者までの方が実際に使える具体的なコード例、その詳しい解説、さらには応用例も含めてご紹介します。
目次
基本的な重複ファイル削除コード
Sub RemoveDuplicateFiles()
Dim FolderPath As String
Dim File1 As String, File2 As String
Dim CheckSum1 As String, CheckSum2 As String
FolderPath = "C:\YourFolderPath\" '変更してください
File1 = Dir(FolderPath & "*.*")
Do While File1 <> ""
File2 = Dir(FolderPath & "*.*")
Do While File2 <> ""
If File1 <> File2 Then
CheckSum1 = CreateObject("Scripting.FileSystemObject").GetFile(FolderPath & File1).DateLastModified
CheckSum2 = CreateObject("Scripting.FileSystemObject").GetFile(FolderPath & File2).DateLastModified
If CheckSum1 = CheckSum2 Then
Kill FolderPath & File2
End If
End If
File2 = Dir
Loop
File1 = Dir
Loop
End Sub
コードの詳細解説
このVBAコードは、指定されたフォルダ内のすべてのファイルをスキャンし、重複しているファイルを削除するものです。
1. フォルダのパスを`FolderPath`変数に設定します。
2. `Dir`関数を使用して、そのフォルダ内のすべてのファイルを順番に取得します。
3. `Scripting.FileSystemObject`を使用して、各ファイルの最終更新日時を取得します。
4. 2つのファイルの最終更新日時が同じ場合、そのファイルは重複とみなし、`Kill`関数を使用して削除します。
応用例
1. フォルダ内の特定の拡張子のファイルのみを対象とする
File1 = Dir(FolderPath & "*.txt")
解説
上記のコードを使用すると、テキストファイル(.txt)のみが対象となり、他の種類のファイルは無視されます。
2. 削除されるファイルの名前をエクセルのシートに記録する
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim LastRow As Long
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1
ws.Cells(LastRow, 1).Value = File2
解説
このコードを`Kill`関数の前に追加することで、削除されるファイルの名前がエクセルのシートに記録されます。
3. 重複ファイルを削除する代わりに、別のフォルダに移動する
Dim DestinationFolder As String
DestinationFolder = "C:\YourBackupFolder\"
Name FolderPath & File2 As DestinationFolder & File2
解説
このコードは、重複しているファイルを削除するのではなく、指定された別のフォルダに移動します。
まとめ
Excel VBAを使用すると、同じ内容の重複ファイルを簡単に削除したり、特定の処理を施したりすることができます。この記事で紹介した基本的なコードや応用例を活用して、ファイルの管理を効率的に行いましょう。
コメント