• ベストアンサー

ファルダ内に散在してるファイルを検索し一箇所にコピーしたい

Excelセルに記述したファイル名(ワイルドカード指定可)で、 フォルダ、サブフォルダ内に、ばらばらに散らばっているファイルを 検索し、見つけたら特定のフォルダに全部集めたい(コピーしてくる)のですが、スクリプトをご教授いただけないでしょうか? よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★『EXCEL』って事は『VBA』ですよね。 ・『VBScript』のスクリプトでのお話ですが、サンプルを載せます。 ・上手く『VBA』用に書き換えてみて下さい。→参考になればと思い。 'Excel セルに記述したファイル名(ワイルドカード指定可) strFindPath = "C:\Excel\*.txt" 'コピー先(移動先)のフォルダ名(全部集めたい場所) strCopyPath = "C:\AllFiles\" Call CustomCopyFile(strFindPath,strCopyPath) '処理ルーチン Sub CustomCopyFile(BasePath,CopyPath)  Set objFS = CreateObject("Scripting.FileSystemObject")  Set objFolder = objFS.GetFolder(BasePath)  'ファイル名(ワイルドカード指定可)の検索  For Each objFile In objFolder.Files   strFname = objFolder.Path & "\" & objFile.Name   'コピー処理   objFS.CopyFile strFname, CopyPath   'objFS.MoveFile strFname, CopyPath  Next End Sub 最後に: ・ソースを見やすくするために全角スペースでインデントしています。  参考にするときは、タブ文字などに変換してお使い下さい。 ・『strFindPath』に検索するファイル名を指定します。 ・『strCopyPath』に移動するフォルダ名を指定します。→最後に『\』を必ず追加します。 ・『CustomCopyFile』を呼び出すと指定された『strFindPath』のファイル名を検索して  『strCopyPath』で指定されたフォルダにコピーします。  なお、コピーではなくて移動ならば『objFS.CopyFile』、『objFS.MoveFile』に変更して下さい。 ・『VBScript』のスクリプトですので、上手く『VBA』用に書き換えてみて下さい。 ・以上。おわり。

THUBAN
質問者

お礼

ありがとうございました。 いただいた内容を参考に、VBAスクリプトを考えてみたいと思います。