hiroton
2024/01/18 (木) 16:02:23
99b6e@f966d
とりあえずで回答しますが、孫フォルダを対象にしたいなら
Sub フォルダ名が売上データ○○になっているフォルダを取得する()
Dim FSO As New FileSystemObject
Dim 検索フォルダ As Folder
Set 検索フォルダ = FSO.GetFolder("C:\Users\○○\Desktop\検索フォルダ")
Dim 該当フォルダ As Folder
Dim フォルダ候補 As Folder
For Each フォルダ候補 In 検索フォルダ.SubFolders
If フォルダ候補.Name Like "売上データ*" Then
Set 該当フォルダ = フォルダ候補
Exit For
ElseIf
'フォルダ候補(子フォルダ)を親として同じことをする
End If
Next
If Not 該当フォルダ Is Nothing Then
MsgBox "該当フォルダのパス:" & 該当フォルダ.Path
End If
End Sub
とするだけですね
Sub フォルダ名が売上データ○○になっているフォルダを取得する()
Dim FSO As New FileSystemObject
Dim 検索フォルダ As Folder
Set 検索フォルダ = FSO.GetFolder("C:\Users\○○\Desktop\検索フォルダ")
Dim 該当フォルダ As Folder
Dim フォルダ候補 As Folder
For Each フォルダ候補 In 検索フォルダ.SubFolders
If フォルダ候補.Name Like "売上データ*" Then
Set 該当フォルダ = フォルダ候補
Exit For
ElseIf
Dim 孫フォルダ As Folder
For Each 孫フォルダ In フォルダ候補.SubFolders
If フォルダ候補.Name Like "売上データ*" Then
Set 該当フォルダ = 孫フォルダ
Exit For
End If
Next
If Not 該当フォルダ Is Nothing Then
Exit For
End If
End If
Next
If Not 該当フォルダ Is Nothing Then
MsgBox "該当フォルダのパス:" & 該当フォルダ.Path
End If
End Sub
それぞれの変数がどのように使われるのか理解して、必要に応じて必要な変数を用意してください
ただし、別階層のフォルダを対象とするということは、同名のフォルダがある可能性が否定できないので、処理の順番によっては望んだ結果にならない場合もあります。また、「見つかったものは全て」というのが望みの場合もあるでしょう。仕様を明確にしましょう
通報 ...