Excel VBAを使用してPDFファイルを自動で仕分ける方法をご紹介します。特に、複数のPDFファイルを仕分けルールに従って移動させるためのスクリプトを解説します。もし、PDFファイルを特定のフォルダーに分類したい場合、この方法が役立ちます。
基本設定とコードの概要
まず、ExcelのVBAを使って、指定したフォルダー内のPDFファイルを仕分けるための基本的な設定を行います。このコードでは、PDFファイルの名前に基づいて、仕分けルールに従ったフォルダーに移動させます。
以下のコードは、指定されたフォルダー内のPDFファイルを、Excelシートに記載された対応表に基づいて仕分けるための基本設定です。ファイル名に一致するキーを見つけて、適切なフォルダーにファイルを移動します。
コードの詳細
“`vbnet
Sub PDF仕分け_Excelルール版() ‘===== 基本設定 =====
Dim basePath As String
basePath = “C:\PDF整理\” ‘ ← PDFが入っているフォルダーを指定
‘====================
Dim ws As Worksheet
Dim fso As Object
Dim file As Object
Dim mapping As Object
Dim movedCount As Long
Dim folderName As String
Dim folderPath As String
Dim key As Variant
Dim i As Long
Dim lastRow As Long
‘ 仕分けルールのあるシート
Set ws = ThisWorkbook.Sheets(“仕分けルール”)
Set fso = CreateObject(“Scripting.FileSystemObject”)
Set mapping = CreateObject(“Scripting.Dictionary”)
‘ ExcelのA列とB列を読み取って対応表を作る
lastRow = ws.Cells(ws.Rows.Count, “A”).End(xlUp).Row
For i = 2 To lastRow
If ws.Cells(i, “A”).Value <> “” And ws.Cells(i, “B”).Value <> “” Then
mapping.Add ws.Cells(i, “A”).Value, ws.Cells(i, “B”).Value
End If
Next i
movedCount = 0
‘ フォルダー内のPDFをすべて確認
For Each file In fso.GetFolder(basePath).Files
If LCase(fso.GetExtensionName(file.Name)) = “pdf” Then
folderName = “”
‘ ファイル名にキーが含まれるかチェック
For Each key In mapping.Keys
If InStr(file.Name, key) > 0 Then
folderName = mapping(key)
Exit For
End If
Next key
‘ 該当フォルダーが存在すれば移動
If folderName <> “” Then
folderPath = basePath & folderName & “\”
If fso.FolderExists(folderPath) Then
file.Move folderPath & file.Name
movedCount = movedCount + 1
Else
Debug.Print “⚠ フォルダーなし: ” & folderPath
End If
Else
Debug.Print “❌ 該当なし: ” & file.Name
End If
End If
Next file
MsgBox “✅ 仕分け完了! ” & movedCount & ” 件のPDFを移動しました。”, vbInformation
“`
このスクリプトを使う利点
このスクリプトを使用することで、PDFファイルを手動で仕分ける必要がなくなり、時間を大幅に短縮できます。さらに、Excelシートで仕分けルールを管理できるため、ルールの変更や追加も簡単に行えます。
また、ファイルの移動に失敗した場合や該当するフォルダーが見つからなかった場合には、エラーメッセージが表示されるので、処理の進行状況を確認しやすくなります。
まとめ
Excel VBAを活用してPDFファイルを自動で仕分ける方法を紹介しました。これにより、大量のPDFファイルを簡単に管理し、効率よく作業を進めることができます。特に、ファイル名に基づいて自動で分類できるため、手動で仕分ける必要がなくなり、作業の効率が向上します。ぜひ、実際の作業に取り入れてみてください。


コメント