win10で正常動作していたExcel VBAがwin11で正常に動作しない

inoche110 20 評価のポイント
2025-10-11T07:35:34.8666667+00:00

[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」→「開発者テクノロジ」に変更しました。

開発者テクノロジ | Visual Basic for Applications
{count} 件の投票

質問作成者が受け入れた回答
  1. Emmanuel Santana 33,970 評価のポイント 独立アドバイザー
    2025-10-11T09:12:11.82+00:00

    こんにちは。Windows 11 のエクスプローラーでそのフォルダーを開いたとき、実際に表示される完全なパスを確認していただけますか?「raw」フォルダーはこのパソコンで作成されたものですか?それとも別のデバイスや OneDrive から同期されたものでしょうか?

    また、フォルダーが「このデバイスに常に保持する」に設定されていることを確認してください。オンライン専用の状態だと、エクスプローラー上では見えていても、VBA の FileSystemObject では検索時に検出されない可能性があります。

    1 人がこの回答が役に立ったと思いました。

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. simo-k 68,230 評価のポイント ボランティア モデレーター
    2025-10-11T07:46:43.6+00:00

    copilotに聞かれたのであれば同様に聞いてみて下さい。デバッグモードを駆使してオブジェクトの状態などをステップごとに確認して意図しない挙動になっていないかを確認して下さい。

    1 人がこの回答が役に立ったと思いました。

お客様の回答

質問作成者は回答に "承認済み"、モデレーターは "おすすめ" とマークできます。これにより、ユーザーは作成者の問題が回答によって解決したことを把握できます。