Excel VBAを使って、特定の単語をタイトルに持つドキュメントをカテゴリ別に整理する技術は、業務の効率化やデータ管理において非常に役立ちます。この記事では、Excel VBAでのこの種の処理の方法を具体的に解説し、さらなる応用例も共有いたします。
目次
VBAによるドキュメントのカテゴリ別整理の基本
基本コード
Sub OrganizeDocumentsByCategory()
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Dim targetFolder As String
Set ws = ThisWorkbook.Worksheets("Sheet1")
Set rng = ws.Range("A1:A" & ws.Cells(Rows.Count, 1).End(xlUp).Row)
For Each cell In rng
If InStr(cell.Value, "会議") Then
targetFolder = "C:\Documents\会議"
ElseIf InStr(cell.Value, "契約") Then
targetFolder = "C:\Documents\契約"
ElseIf InStr(cell.Value, "請求") Then
targetFolder = "C:\Documents\請求"
Else
targetFolder = "C:\Documents\その他"
End If
FileCopy cell.Offset(0, 1).Value, targetFolder & "\" & Dir(cell.Offset(0, 1).Value)
Next cell
End Sub
コードの詳細解説
このコードは、Sheet1のA列に記載されたファイル名のドキュメントを、そのタイトルに含まれる特定のキーワードに基づいてカテゴリ別のフォルダに整理するものです。例として、”会議”、”契約”、”請求”というキーワードを持つドキュメントをそれぞれのカテゴリ別フォルダに移動します。
補足事項
このコードは基本的なものですので、実際の業務に適用する際は、フォルダのパスやキーワードのカテゴリを適切にカスタマイズする必要があります。
応用例
応用例1: ファイルのコピーではなく移動を行う
Name cell.Offset(0, 1).Value As targetFolder & "\" & Dir(cell.Offset(0, 1).Value)
このコードを使用すると、元の場所からファイルを削除し、新しいフォルダに移動します。
応用例2: キーワードの一覧を外部のリストから取得する
Dim keywordsWs As Worksheet
Dim keywordRange As Range
Dim keywordCell As Range
Set keywordsWs = ThisWorkbook.Worksheets("Keywords")
Set keywordRange = keywordsWs.Range("A1:A" & keywordsWs.Cells(Rows.Count, 1).End(xlUp).Row)
For Each keywordCell In keywordRange
If InStr(cell.Value, keywordCell.Value) Then
targetFolder = "C:\Documents\" & keywordCell.Value
Exit For
End If
Next keywordCell
応用例3: 各カテゴリごとのファイル数を集計する
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
For Each cell In rng
If dict.Exists(targetFolder) Then
dict(targetFolder) = dict(targetFolder) + 1
Else
dict.Add targetFolder, 1
End If
Next cell
このコードを利用すると、各カテゴリのフォルダに整理されたファイルの数を辞書オブジェクトを用いて集計できます。
まとめ
Excel VBAを使用して、特定のキーワードを持つドキュメントをカテゴリ別に整理する技術は、日々の業務の効率化に大きく貢献します。この記事で提供した基本的なコードや応用例を参考に、独自のニーズに合わせてカスタマイズしてみてください。
コメント