- ベストアンサー
カレントディレクトリにあるExcelファイルを全て開く
Excelのマクロ機能などを利用してカレントディレクトリ(というかマクロを実行するファイルが格納されたフォルダ)内のその他のExcelファイルを全て開かせるにはどうすればよいでしょうか?フォルダ名の指定はせず、実行するファイルを移動しても動作するようにしたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。大変失礼しました。 2通り試して「うまくいかなかった方」の内容を投稿してしまっていました。 改めて、 FileName = Dir(ThisWorkbook.Path & "\*.xls") の箇所を、 ChDir (ThisWorkbook.Path) FileName = Dir("*.xls") に変更してみてください。 多分これでうまくいくと思うのですが…。
その他の回答 (2)
- ham_kamo
- ベストアンサー率55% (659/1197)
No.1です。 カレントフォルダをオプションで指定されているのですね。 それでは、 FileName = Dir("*.xls") の行を、 FileName = Dir(ThisWorkbook.Path & "\*.xls") に変更してみてください。
お礼
オプションで指定したカレントフォルダ外のフォルダにファイルを移して実行すると、以下のエラーが☆の行に出てしまいます。 実行時エラー1004 XXXXファイル(ファイルAと同じフォルダ内のファイル)が見つかりません。ファイル名およびファイル保存場所が正しいかどうか確認して下さい。 オプションでカレントフォルダを指定しなければうまくはいきますが。オプションで指定していてもうまくいく方法ありませんでしょうか? Sub OpneAllBook() Dim FileName As String Dim OpenedBook As Workbook Dim IsBookOpen As Boolean FileName = Dir(ThisWorkbook.Path & "\*.xls") Do While FileName <> "" IsBookOpen = False For Each OpenedBook In Workbooks If OpenedBook.Name = FileName Then IsBookOpen = True Exit For End If Next If IsBookOpen = False Then Workbooks.Open (FileName) ⇒☆ End If FileName = Dir() Loop End Sub
- ham_kamo
- ベストアンサー率55% (659/1197)
ちょうど先日そのマクロを作ったところでした。 同じフォルダにある開かれてない*.xlsファイルを全て開きます。 Sub OpenAllBooks() Dim FileName As String Dim OpenedBook As Workbook Dim IsBookOpen As Boolean FileName = Dir("*.xls") Do While FileName <> "" IsBookOpen = False For Each OpenedBook In Workbooks If OpenedBook.Name = FileName Then IsBookOpen = True Exit For End If Next If IsBookOpen = False Then Workbooks.Open (FileName) End If FileName = Dir() Loop End Sub
お礼
ファイルAからこの「OpenAllBooks」マクロを実行したときに、ファイルAが現在あるフォルダ(例えばフォルダX)の中にある全てのファイルを開きたいのです。また、ファイルAをフォルダXからフォルダY内に移した場合はフォルダY内のファイルA以外のファイルを開くようにしたいのです。 回答頂いたやり方ですと、ファイルAがどのフォルダにあるかは関係なく「ツール>オプション>カレントフォルダ」で設定したフォルダ内のファイルが開かれてしまいます。 何か解決法はありますでしょうか?
お礼
有難うございます。 うまく動作しました!