Excel VBAを利用して、ファイルの作成者に基づく整理を行う方法を解説します。具体的には、特定のフォルダ内にあるファイルを作成者ごとに新しいフォルダに移動させるコードと、その解説を中心に紹介します。また、この処理の応用例として、さまざまな場面での使用方法を3つ提案します。
Excel VBAの基本
Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。
そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

ファイルを作成者別に整理する基本のコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
Sub OrganizeFilesByAuthor() Dim objFSO As Object Dim SourceFolder As Object Dim FileItem As Object Dim DestFolder As String Dim Author As String ' 初期設定 Set objFSO = CreateObject("Scripting.FileSystemObject") Set SourceFolder = objFSO.GetFolder("C:\path_to_your_folder") '対象フォルダのパス ' フォルダ内の全ファイルを確認 For Each FileItem In SourceFolder.Files Author = FileItem.Author 'ファイルの作成者を取得 ' 作成者名を基にフォルダを作成 DestFolder = SourceFolder & "\" & Author If Not objFSO.FolderExists(DestFolder) Then objFSO.CreateFolder DestFolder End If ' ファイルを作成者名のフォルダに移動 FileItem.Move DestFolder & "\" & FileItem.Name Next ' オブジェクトをクリア Set objFSO = Nothing Set SourceFolder = Nothing End Sub |
コードの詳細解説
このコードは、指定したフォルダ内のファイルを作成者ごとに別々のフォルダに整理するものです。
– objFSO
は、ファイルやフォルダの操作を行うためのオブジェクトです。
– SourceFolder
は、整理の対象となるフォルダを示すオブジェクトです。
– フォルダ内の各ファイルに対して、作成者情報を取得し、その名前で新しいフォルダを作成します。
– すでに作成者名のフォルダが存在する場合は、新しいフォルダを作成せず、そのフォルダにファイルを移動します。
応用例
1. ファイルの更新日時で整理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub OrganizeFilesByDate() ' ... (上部は基本コードと同じ) For Each FileItem In SourceFolder.Files UpdateDate = Format(FileItem.DateLastModified, "yyyy-mm-dd") DestFolder = SourceFolder & "\" & UpdateDate If Not objFSO.FolderExists(DestFolder) Then objFSO.CreateFolder DestFolder End If FileItem.Move DestFolder & "\" & FileItem.Name Next ' ... (下部は基本コードと同じ) End Sub |
この応用例では、ファイルの更新日時を基にフォルダを作成し、それに応じてファイルを移動します。
2. ファイルの拡張子で整理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub OrganizeFilesByExtension() ' ... (上部は基本コードと同じ) For Each FileItem In SourceFolder.Files FileExtension = objFSO.GetExtensionName(FileItem.Name) DestFolder = SourceFolder & "\" & FileExtension If Not objFSO.FolderExists(DestFolder) Then objFSO.CreateFolder DestFolder End If FileItem.Move DestFolder & "\" & FileItem.Name Next ' ... (下部は基本コードと同じ) End Sub |
この応用例では、ファイルの拡張子(.xls, .docなど)を基にフォルダを作成し、それに応じてファイルを移動します。
3. ファイルサイズで整理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Sub OrganizeFilesBySize() ' ... (上部は基本コードと同じ) For Each FileItem In SourceFolder.Files If FileItem.Size < 1048576 Then SizeCategory = "Small" ElseIf FileItem.Size < 1073741824 Then SizeCategory = "Medium" Else SizeCategory = "Large" End If DestFolder = SourceFolder & "\" & SizeCategory If Not objFSO.FolderExists(DestFolder) Then objFSO.CreateFolder DestFolder End If FileItem.Move DestFolder & "\" & FileItem.Name Next ' ... (下部は基本コードと同じ) End Sub |
この応用例では、ファイルのサイズを基に(例:Small, Medium, Large)、フォルダを作成し、それに応じてファイルを移動します。
まとめ
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)
パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください
コメント