質問

以前以下のVBAを教えていただいたham-kamoさんに質問があります。もちろん違う方でも構いません。

「同じフォルダ内のブックを開くマクロ」についてですが、以下のVBAだとカレントフォルダをオプションで違うドライブに設定しているとうまく動作しないのですが、解決法はありますでしょうか?

例えば\\AAAA\BBというアドレスのフォルダ内にマクロを起動するファイルがあり、C:\Documents and Settings\XXXXがカレントフォルダに設定されるとC:\Documents and Settings\XXXX内のExcelファイルが開かれてしまうということです。
--------------------------
Sub OpenAllBooks()
Dim FileName As String
Dim OpenedBook As Workbook
Dim IsBookOpen As Boolean

ChDir (ThisWorkbook.Path)
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

通報する

回答 (4件)

こんにちは。前回回答したham_kamoです。
いろいろ試しているうちに他の方々が回答してくれましたが、一応私の回答は以下の通りです。

まず、
ChDir (ThisWorkbook.Path)
FileName = Dir("*.xls")

FileName = Dir(ThisWorkbook.Path & "\*.xls")
に変更し、さらに
Workbooks.Open (FileName)
の部分(前回エラーが出た場所です)を、
Workbooks.Open (ThisWorkbook.Path & "\" & FileName)
に変更してみてください。

この回答へのお礼

有難うございます。
ham_kamoさんのやり方で、思う通りの動作が実現できました。
他のPCで試しても問題ありません。

いろいろな方に返答いただき有難うございます。
質問がうまく出来ていなかったため混乱させてしまったようで
申し訳ありませんでした!

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

別のところでも書きましたが、UNC名や別ドライブに対するchdirは機能しません。
APIを使用して切り替える方法も有りますが、
単にファイルを開きたいだけならカレントディレクトリを移動する必要は無いと思います。

ChDir (ThisWorkbook.Path)
FileName = Dir("*.xls")



FileName = Dir(ThisWorkbook.Path & "\*.xls")

で良いのではないでしょうか?

この回答への補足

>FileName = Dir(ThisWorkbook.Path & "\*.xls")
このやり方も試したのですがエラーが出てしまいます。
実行時エラー1004「ファイル名およびファイルの保存場所が正しいかどうか確認して下さい」というようなエラーです。

ドライブ名も指定せずにファイルをどんなドライブに移動しても対応できるようにしたいのですが…。

>カレントフォルダをオプションで違うドライブに設定しているとうまく動作しないのですが
このマクロはアクティブなブックの保存先ディレクトリにある全てのブックを開く仕様になっていると思います。ですから上記の意味がよく理解できません。

「\\AAAA\BB」とありますが、今の仕様をネットワークドライブのフォルダにあるエクセルファイルを開くように変えたいということでしょうか? もしそうなら、

ChDir (ThisWorkbook.Path)はカレントディレクトリを変更する命令ですから、意味が分かれば簡単だと思います
ChDir ("\\AAAA\BB")
にすればリモートドライブを指定できます。またローカルディスクなら
ChDir ("D:\AAAA\BB")
のようにフルパスで指定すれば良いと思います。

質問の意味が正確に理解できていませんので、的はずれならご容赦ください。

この回答への補足

>「\\AAAA\BB」とありますが、今の仕様をネットワークドライブのフォルダにあるエクセルファイルを開くように変えたいということでしょうか? 

ネットワークドライブ、ローカルディスク両方に対応したいということです。パスは特定でなく、マクロを実行するファイルを別のフォルダに移動したらその移動先のフォルダ内のファイルを開けるようにしたいということです。

このQ&Aは役に立ちましたか?8 件

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

新しく質問する

このQ&Aを見た人はこんなQ&Aも見ています

注目の記事


新しく質問する

このカテゴリの人気Q&Aランキング

毎日見よう!教えて!gooトゥディ

べんりQ&A特集