[VBAの機能]
「C:\Users\my\OneDrive\ドキュメント\@写真」の中で、作成日が1か月以前の「raw」という名前のフォルダーのエクスプローラーを表示する。(サブフォルダーも検索する)
見つからない時は「条件に合うフォルダーが見つかりませんでした」のメッセージを表示する。
[問題点]
該当のフォルダーが存在するのに、「条件に合うフォルダーが見つかりませんでした」のメッセージが表示されてしまう。
[VBAコード]
Sub 古いRAWフォルダー表示()
'作成者 AI copilot.microsoft
Dim folderPath As String
Dim fso As Object
Dim targetDate As Date
' フォルダーパスを指定(トップフォルダを設定)
folderPath = "C:\Users\my\OneDrive\ドキュメント\@写真"
' 1か月前の日付を計算
targetDate = DateAdd("m", -1, Date)
' FileSystemObjectを初期化
Set fso = CreateObject("Scripting.FileSystemObject")
' フォルダーを再帰的に検索
If RecursiveSearch(fso.GetFolder(folderPath), targetDate) = False Then
MsgBox "条件に合うフォルダーが見つかりませんでした。", vbExclamation, "結果"
End If
End Sub
======================================
Function RecursiveSearch(folder As Object, targetDate As Date) As Boolean
dockerfile
Dim subFolder As Object
Dim found As Boolean
found = False
' 各サブフォルダーを調べる
For Each subFolder In folder.SubFolders
' "raw"という名前で、作成日が1月以前のフォルダーを探す
If LCase(subFolder.Name) = "raw" And subFolder.DateCreated < targetDate Then
' エクスプローラーでフォルダーを開く
Shell "explorer.exe " & subFolder.Path, vbNormalFocus
RecursiveSearch = True
Exit Function
End If
' サブフォルダー内を再帰的に検索
If RecursiveSearch(subFolder, targetDate) Then
RecursiveSearch = True
Exit Function
End If
Next subFolder
End Function
[最後に]
VBA等に精通されている方、よろしくお願い致します。
<モデレーター注>
質問内容をもとにタグを「Microsoft 365 と Office | Excel | 家庭向け | Windows」→「開発者テクノロジ」に変更しました。