Sub MoveFilesBasedOnExtension()
' 変数宣言
Dim FolderPath As String ' 選択されたフォルダのパスを保存するための変数
Dim FileExtension As String ' ファイルの拡張子を保存するための変数
Dim ExtensionFolder As String ' 拡張子に基づいたフォルダのパスを保存するための変数
Dim FileName As String ' ファイル名を保存するための変数
Dim FSO As Object ' FileSystemObjectのためのオブジェクト変数
' フォルダ選択ダイアログを表示
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then ' フォルダが選択された場合
FolderPath = .SelectedItems(1) ' 選択されたフォルダのパスをFolderPathに代入
Else
MsgBox "フォルダが選択されませんでした。", vbExclamation ' フォルダが選択されなかった場合のメッセージ
Exit Sub ' サブプロシージャを終了
End If
End With
Set FSO = CreateObject("Scripting.FileSystemObject") ' FileSystemObjectを初期化
' 選択されたフォルダ内のファイルをチェック
Dim Folder As Object ' フォルダオブジェクトのための変数
Set Folder = FSO.GetFolder(FolderPath) ' FolderPathのフォルダオブジェクトを取得
Dim File As Object ' ファイルオブジェクトのための変数
For Each File In Folder.Files ' フォルダ内の各ファイルに対して繰り返し処理
FileExtension = LCase(FSO.GetExtensionName(File.Path)) ' ファイルの拡張子を小文字で取得
If FileExtension <> "" Then ' 拡張子が空でない場合
' 拡張子ごとのフォルダを作成(存在しない場合のみ)
ExtensionFolder = FolderPath & "\" & FileExtension ' 拡張子フォルダのパスを作成
If Not FSO.FolderExists(ExtensionFolder) Then ' 拡張子フォルダが存在しない場合
FSO.CreateFolder(ExtensionFolder) ' フォルダを作成
End If
' ファイルを対応するフォルダに移動
FileName = FSO.GetFileName(File.Path) ' ファイル名を取得
FSO.MoveFile Source:=File.Path, Destination:=ExtensionFolder & "\" & FileName ' ファイルを移動
End If
Next File
MsgBox "ファイルの整理が完了しました。", vbInformation ' 処理完了のメッセージ
End Sub
'
'
Option Explicit
Sub MoveFilesByDate()
' 変数宣言
Dim FolderPath As String ' 選択されたフォルダのパスを保存するための変数
Dim DateFolder As String ' 日付に基づいたフォルダのパスを保存するための変数
Dim FileName As String ' ファイル名を保存するための変数
Dim FSO As Object ' FileSystemObject操作用のオブジェクト変数
Dim LastModified As String ' ファイルの最終更新日時を保存するための変数
' フォルダ選択ダイアログを表示
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then ' フォルダが選択された場合
FolderPath = .SelectedItems(1) ' 選択されたフォルダのパスをFolderPathに代入
Else
MsgBox "フォルダが選択されませんでした。", vbExclamation ' フォルダが選択されなかった場合のメッセージ
Exit Sub ' サブプロシージャを終了
End If
End With
Set FSO = CreateObject("Scripting.FileSystemObject") ' FileSystemObjectを初期化
Dim Folder As Object ' フォルダ操作用のオブジェクト変数
Set Folder = FSO.GetFolder(FolderPath) ' FolderPathのフォルダオブジェクトを取得
' フォルダ内のファイルをチェックし、日付ごとに整理
Dim File As Object ' ファイル操作用のオブジェクト変数
For Each File In Folder.Files ' フォルダ内の各ファイルに対して繰り返し処理
' ファイルの最終更新日を取得(年月のみ)
LastModified = Year(File.DateLastModified) & "-" & Right("0" & Month(File.DateLastModified), 2)
' 日付に基づいたフォルダを作成(存在しない場合のみ)
DateFolder = FolderPath & "\" & LastModified ' 日付フォルダのパスを作成
If Not FSO.FolderExists(DateFolder) Then ' 日付フォルダが存在しない場合
FSO.CreateFolder (DateFolder) ' フォルダを作成
End If
' ファイルを対応するフォルダに移動
FileName = FSO.GetFileName(File.Path) ' ファイル名を取得
FSO.MoveFile Source:=File.Path, Destination:=DateFolder & "\" & FileName ' ファイルを移動
Next File
MsgBox "ファイルの整理が完了しました。", vbInformation ' 処理完了のメッセージ
End Sub
'
'