プロが教えるわが家の防犯対策術!

以前以下の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

A 回答 (4件)

こんにちは。

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

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

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

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

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

お礼日時:2006/12/27 20:00

'ChDir (ThisWorkbook.Path)


をコメントにし、以下の一行を実行してください。
Application.DefaultFilePath = ThisWorkbook.Path
    • good
    • 1

別のところでも書きましたが、UNC名や別ドライブに対するchdirは機能しません。


APIを使用して切り替える方法も有りますが、
単にファイルを開きたいだけならカレントディレクトリを移動する必要は無いと思います。

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



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

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

この回答への補足

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

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

補足日時:2006/12/27 17:09
    • good
    • 0

>カレントフォルダをオプションで違うドライブに設定しているとうまく動作しないのですが


このマクロはアクティブなブックの保存先ディレクトリにある全てのブックを開く仕様になっていると思います。ですから上記の意味がよく理解できません。

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

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

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

この回答への補足

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

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

補足日時:2006/12/27 17:04
    • good
    • 0

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