
以前以下の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
No.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で試しても問題ありません。
いろいろな方に返答いただき有難うございます。
質問がうまく出来ていなかったため混乱させてしまったようで
申し訳ありませんでした!
No.3
- 回答日時:
'ChDir (ThisWorkbook.Path)
をコメントにし、以下の一行を実行してください。
Application.DefaultFilePath = ThisWorkbook.Path
No.2
- 回答日時:
別のところでも書きましたが、UNC名や別ドライブに対するchdirは機能しません。
APIを使用して切り替える方法も有りますが、
単にファイルを開きたいだけならカレントディレクトリを移動する必要は無いと思います。
ChDir (ThisWorkbook.Path)
FileName = Dir("*.xls")
↓
FileName = Dir(ThisWorkbook.Path & "\*.xls")
で良いのではないでしょうか?
この回答への補足
>FileName = Dir(ThisWorkbook.Path & "\*.xls")
このやり方も試したのですがエラーが出てしまいます。
実行時エラー1004「ファイル名およびファイルの保存場所が正しいかどうか確認して下さい」というようなエラーです。
ドライブ名も指定せずにファイルをどんなドライブに移動しても対応できるようにしたいのですが…。
No.1
- 回答日時:
>カレントフォルダをオプションで違うドライブに設定しているとうまく動作しないのですが
このマクロはアクティブなブックの保存先ディレクトリにある全てのブックを開く仕様になっていると思います。ですから上記の意味がよく理解できません。
「\\AAAA\BB」とありますが、今の仕様をネットワークドライブのフォルダにあるエクセルファイルを開くように変えたいということでしょうか? もしそうなら、
ChDir (ThisWorkbook.Path)はカレントディレクトリを変更する命令ですから、意味が分かれば簡単だと思います
ChDir ("\\AAAA\BB")
にすればリモートドライブを指定できます。またローカルディスクなら
ChDir ("D:\AAAA\BB")
のようにフルパスで指定すれば良いと思います。
質問の意味が正確に理解できていませんので、的はずれならご容赦ください。
この回答への補足
>「\\AAAA\BB」とありますが、今の仕様をネットワークドライブのフォルダにあるエクセルファイルを開くように変えたいということでしょうか?
ネットワークドライブ、ローカルディスク両方に対応したいということです。パスは特定でなく、マクロを実行するファイルを別のフォルダに移動したらその移動先のフォルダ内のファイルを開けるようにしたいということです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
toast7.1で DVD ビデオが焼けない
-
EドライブをCドライブに変更したい
-
Javaでなぜ共通ディスクは認識...
-
ログインしない状態でネットワ...
-
複数のHDDを一つのドライブに
-
WindowsXPの起動時にネットワー...
-
ゲーミングPCなんですが起動す...
-
iTunesでディスク作成できない!?
-
PDFが開けない!!!
-
ドライブの順番(DとE)を変え...
-
WindowsXPでのドライブの割り当て
-
パーティション作成(ドライブの...
-
ドライバは \\Device\\Harddisk...
-
Windows上のApache2.2でネット...
-
HDDのローカルディスク(E)が消...
-
PC Windows10 フォルダ下に付い...
-
Windows10が起動しなくなりました
-
Cドライブの「ProgramFiles」と...
-
画像ファイルの関連付けについて
-
「AOMEI Backupper Standard」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PDFが開けない!!!
-
ログインしない状態でネットワ...
-
USBメモリが認識しません。
-
ドライブの順番(DとE)を変え...
-
iTunesでディスク作成できない!?
-
HDDのローカルディスク(E)が消...
-
ゲーミングPCなんですが起動す...
-
デフラグの最適化が進まない
-
突然Dドライブにアクセスできな...
-
BATファイル内で、他のネットワ...
-
マッピングされたドライブとは...
-
ドライバは \\Device\\Harddisk...
-
Javaでなぜ共通ディスクは認識...
-
ネットワークドライブ上ファイ...
-
パーティション作成(ドライブの...
-
HarddiskVolume8を特定する方法
-
ネットワークドライブの割り当...
-
DドライブがEドライブになって...
-
USB接続のハードディスクのドラ...
-
USBメモリのドライブレターを固...
おすすめ情報