Excel VBAを利用して、ファイルの作成者に基づく整理を行う方法を解説します。具体的には、特定のフォルダ内にあるファイルを作成者ごとに新しいフォルダに移動させるコードと、その解説を中心に紹介します。また、この処理の応用例として、さまざまな場面での使用方法を3つ提案します。
目次
ファイルを作成者別に整理する基本のコード
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. ファイルの更新日時で整理
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. ファイルの拡張子で整理
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. ファイルサイズで整理
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を使用して、ファイルを特定の条件(作成者、更新日時、拡張子、ファイルサイズなど)に基づいて整理する方法を紹介しました。これらの方法は、大量のファイルを効率的に整理する際に非常に便利です。自分のニーズに合わせて、コードをカスタマイズして利用してみてください。
コメント