Excel VBAを利用して重複ファイルを削除する方法

この記事では、Excel VBAを利用して同じ内容の重複ファイルを削除する方法について詳しく解説します。初心者から中級者までの方が実際に使える具体的なコード例、その詳しい解説、さらには応用例も含めてご紹介します。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft 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を使用すると、同じ内容の重複ファイルを簡単に削除したり、特定の処理を施したりすることができます。この記事で紹介した基本的なコードや応用例を活用して、ファイルの管理を効率的に行いましょう。

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

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

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

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

コメント

コメントする

目次