Excel VBA 質問スレッド №1971 (未解決)

fso.CopyFileで、フォルダの中にあるファイルを見つけてくれない。

投稿者 : exiad     投稿日時 : 2024/07/23(Tue) 15:58:20     OS : Windows 10     EXCEL : Excel 2019
あるフォルダから、他のフォルダへフォルダ内のファイルを一括コピーするVBAを作っているのですが、
下記のVBAを書いて実行すると「ファイルが見つかりません」というエラーが出て、フォルダー内にある
xlsxファイル、pdfファイルを認識してくれません。何が悪いのでしょうか?
お手数ですが、よろしくお願いいたします。


Sub OpenFilesInFolder()

    Dim path, fso, file, files, pfl, fl, fl2

    path = ThisWorkbook.path
    Set fso = CreateObject("Scripting.FileSystemObject")
    

    Set pfl = fso.GetFolder(path)

    Dim s As String
    Dim t As String

   
    For Each fl In pfl.SubFolders
    s = fl.path

    

        t = "\\192.168.1.242\vbs\4.経理\小口データ保存\小口2024年\小口09月分"
    
        fso.CopyFile Source:=s & "" & "*.xlsx", Destination:=t, overwritefiles:=False
        fso.CopyFile Source:=s & "" & "*.pdf", Destination:=t, overwritefiles:=False
    
    Next
    

End Sub

スポンサーリンク
[返信 1] Re : fso.CopyFileで、フォルダの中にあるファイルを見つけてくれない。
投稿者 : さんこう     投稿日時 : 2024/07/23(Tue) 16:23:46
>フォルダー内にあるxlsxファイル、pdfファイルを認識してくれません。

「s & "" & "*.xlsx"」で表されるファイルが存在しないのでしょう。


現状のコードで、「\\aaa\bbb\ccc」フォルダの「ddd.xlsx」を見つけようとしているなら、

「\\aaa\bbb」フォルダに「cccddd.xlsx」があれば見つけられるでしょう。

[返信 2] Re : fso.CopyFileで、フォルダの中にあるファイルを見つけてくれない。
投稿者 : exiad     投稿日時 : 2024/07/23(Tue) 17:14:48
■[返信 1] さんこうさん(2024-07-23 16:23:46)の記事
> >フォルダー内にあるxlsxファイル、pdfファイルを認識してくれません。

> 「s & "" & "*.xlsx"」で表されるファイルが存在しないのでしょう。


> 現状のコードで、「\\aaa\bbb\ccc」フォルダの「ddd.xlsx」を見つけようとしているなら、

> 「\\aaa\bbb」フォルダに「cccddd.xlsx」があれば見つけられるでしょう。




*はワイルドカードで、フォルダ下にあるすべてのxlsxファイルを表しているつもりです。
他に良い方法はあるでしょうか?

[返信 3] Re : fso.CopyFileで、フォルダの中にあるファイルを見つけてくれない。
投稿者 : とおりすがり     投稿日時 : 2024/07/23(Tue) 17:33:17
さんこうさんは回りくどい言い方してますが、単純にパスの区切り文字がないです

fso.CopyFile Source:=s & "\" & "*.xlsx", Destination:=t, overwritefiles:=False

[返信 4] Re : fso.CopyFileで、フォルダの中にあるファイルを見つけてくれない。
投稿者 : どうかしてるぜ     投稿日時 : 2024/07/24(Wed) 09:26:42
>さんこうさんは回りくどい言い方してますが、単純にパスの区切り文字がないです


>現状のコードで、「\\aaa\bbb\ccc」フォルダの「ddd.xlsx」を見つけようとしているなら、
>「\\aaa\bbb」フォルダに「cccddd.xlsx」があれば見つけられるでしょう。

うそでしょ。なんで↑こんな言い方しかできないの?
ほんと信じられん。

[返信 5] Re : fso.CopyFileで、フォルダの中にあるファイルを見つけてくれない。
投稿者 : 匿名     投稿日時 : 2024/07/24(Wed) 11:45:11
>うそでしょ。なんで↑こんな言い方しかできないの?
>ほんと信じられん。

些細な事かもしれませんが、
私はさんこう様の言い回しが好きです。

理由は、質問者本人に、パスの区切り文字がない事を
気づいて欲しい場合には、この様な言い回しが良いと思うからです。


さんこう様のような回答を頂き、よく読む事(今回は「cccddd.xlsx」)で自分の間違えに気づく、
そして、コピペでできたではなく、自分で気づいているので、
次回以降も間違えずにコードを書ける、
或いは、間違えても自分で気づけるようになり、
その積み重ねが、VBAが出来るようになる事に繋がると
思っているからです。

事実、さんこう様の回答に、
>*はワイルドカードで、フォルダ下にあるすべてのxlsxファイルを表しているつもりです。
と自分の間違えを誤って捉えているように思えます。

さんこう様は、
例を挙げて(この場合の例はddd.xlsx)
cccddd.xlsx
としているのでしょう?。
cccとdddがつながっている時点で、cccフォルダ内ではなく、
bbbフォルダからcccddd.xlsxを探そうとしているのでは?
とヒントを差し上げているのだと思います。
だって名前が「さんこう」なのですから…
過去ログを見ても、さんこう様は、参考にしてね。のような
返信を良くしていますよ。

回答をつける人を非難するのは良くないと思います。

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-07-03 12:09:38 )
タイトルとURLをコピーしました