• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXcelマクロで同じフォルダ内のファイル全て開く。ドライブまたいでも対応)

EXcelマクロで同じフォルダ内のファイル全て開く方法

このQ&Aのポイント
  • EXcelマクロを使用して同じフォルダ内のすべてのファイルを開く方法について教えてください。
  • カレントフォルダが異なるドライブに設定されている場合に、EXcelマクロで同じフォルダ内のファイルを開く際に問題が発生します。この問題の解決方法はありますか?
  • 特定のフォルダ内のExcelファイルを自動的に開くマクロを作成したいです。どのようにすれば実現できますか?

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.4

こんにちは。前回回答したham_kamoです。 いろいろ試しているうちに他の方々が回答してくれましたが、一応私の回答は以下の通りです。 まず、 ChDir (ThisWorkbook.Path) FileName = Dir("*.xls") を FileName = Dir(ThisWorkbook.Path & "\*.xls") に変更し、さらに Workbooks.Open (FileName) の部分(前回エラーが出た場所です)を、 Workbooks.Open (ThisWorkbook.Path & "\" & FileName) に変更してみてください。

teru5000
質問者

お礼

有難うございます。 ham_kamoさんのやり方で、思う通りの動作が実現できました。 他のPCで試しても問題ありません。 いろいろな方に返答いただき有難うございます。 質問がうまく出来ていなかったため混乱させてしまったようで 申し訳ありませんでした!

その他の回答 (3)

  • tetra
  • ベストアンサー率33% (1/3)
回答No.3

'ChDir (ThisWorkbook.Path) をコメントにし、以下の一行を実行してください。 Application.DefaultFilePath = ThisWorkbook.Path

  • Yeti21
  • ベストアンサー率47% (396/830)
回答No.2

別のところでも書きましたが、UNC名や別ドライブに対するchdirは機能しません。 APIを使用して切り替える方法も有りますが、 単にファイルを開きたいだけならカレントディレクトリを移動する必要は無いと思います。 ChDir (ThisWorkbook.Path) FileName = Dir("*.xls") ↓ FileName = Dir(ThisWorkbook.Path & "\*.xls") で良いのではないでしょうか?

teru5000
質問者

補足

>FileName = Dir(ThisWorkbook.Path & "\*.xls") このやり方も試したのですがエラーが出てしまいます。 実行時エラー1004「ファイル名およびファイルの保存場所が正しいかどうか確認して下さい」というようなエラーです。 ドライブ名も指定せずにファイルをどんなドライブに移動しても対応できるようにしたいのですが…。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

>カレントフォルダをオプションで違うドライブに設定しているとうまく動作しないのですが このマクロはアクティブなブックの保存先ディレクトリにある全てのブックを開く仕様になっていると思います。ですから上記の意味がよく理解できません。 「\\AAAA\BB」とありますが、今の仕様をネットワークドライブのフォルダにあるエクセルファイルを開くように変えたいということでしょうか? もしそうなら、 ChDir (ThisWorkbook.Path)はカレントディレクトリを変更する命令ですから、意味が分かれば簡単だと思います ChDir ("\\AAAA\BB") にすればリモートドライブを指定できます。またローカルディスクなら ChDir ("D:\AAAA\BB") のようにフルパスで指定すれば良いと思います。 質問の意味が正確に理解できていませんので、的はずれならご容赦ください。

teru5000
質問者

補足

>「\\AAAA\BB」とありますが、今の仕様をネットワークドライブのフォルダにあるエクセルファイルを開くように変えたいということでしょうか?  ネットワークドライブ、ローカルディスク両方に対応したいということです。パスは特定でなく、マクロを実行するファイルを別のフォルダに移動したらその移動先のフォルダ内のファイルを開けるようにしたいということです。