- ベストアンサー
vba フォルダ名に応じてフォルダを整理
写真が入っているフォルダが増えてきたので、以下のように現在あるフォルダを年代別フォルダに移動して整理したいのですが、コードをお教えください。 【現在あるフォルダ】 ・ ・ 2000_01_01 東京 2001_08_12 北海道 ・ ・ 2010_02_03 名古屋 ・ ・ 2024_12_14 横須賀 ・ ・ 【存在しなければ新たに作るフォルダ】現在あるフォルダと同じ場所に作る ・ ・ 2000年代 2010年代 2020年代 ・ ・ 【移動方法】 2000年代・・・2000_01_01〇~2009_12_31〇のフォルダを入れる 2010年代・・・2010_01_01〇~2019_12_31〇のフォルダを入れる 2020年代・・・2020_01_01〇~2029_12_31〇のフォルダを入れる
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでしょうか Sub 年代別フォルダ移動() Dim fs As Object Dim sourceFolder As String Dim targetFolder As String Dim subFolder As Object Dim subFolders As Object sourceFolder = "C:\対象のフォルダのある場所" Set fs = CreateObject("Scripting.FileSystemObject") Set subFolders = fs.GetFolder(sourceFolder).subFolders For Each subFolder In subFolders ' フォルダ名が日付形式かチェック If IsDate(Replace(Left(subFolder.Name, 10), "_", "/")) Then targetFolder = sourceFolder & "\" & Left(subFolder.Name, 3) & "0年代" ' 年代フォルダ名 If Not fs.FolderExists(targetFolder) Then fs.CreateFolder targetFolder ' 存在しない場合は作成 subFolder.Move targetFolder & "\" & subFolder.Name ' 対応する年代のフォルダへ移動 End If Next MsgBox "移動完了" End Sub
お礼