- 締切済み
Office2010のVBAファイル自動オープン
VBAの自動オープンで対象ファイルの開き方によって VBAが正常に動かないので質問させt下さい。 ネットワーク上のサーバーである AD-1から開くのとネットワークドライブPから開くのとでは Excelの名前の管理機能が動作しません。 Private Sub Workbook_Open() Workbooks.Open Filename:= _ "\\ad1\共通\aaaa.xlsx" Worksheets("Sheet1").Activate と Private Sub Workbook_Open() Workbooks.Open Filename:= _ "P:\共通\aaaa.xlsx" Worksheets("Sheet1").Activate 両方とも稼働させる方法はあるのでしょうか? よろしくお願いします。 End Sub
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- tsubuyuki
- ベストアンサー率45% (699/1545)
すいません。 > どちらでも開くように・・・。 の真意が今一汲み取れなかったりしながら数日過ぎちゃいました。 これは、 ・2カ所に保存されている同名のファイルを「同時に開きたい」 ・2カ所に保存されている同名のファイルを「使い分けたい」 のどちらでしょう? 前者だとすると、添付図のようなエラーが出てきますね。 同名のブックが既に開いている場合に出てくるエラーですが、 コレを回避するにはファイル名を変える以外に手段は無いでしょう。 後者だとしたら、どちらを開くのか切り替えるトリガーが必要です。 任意のセルの内容によってIFで分岐する、 使用者によって分岐する、などなど、色々と方法はありそうです。 Dim myPath As String If 条件 Then myPath = "\\ad1\共通\" Else myPath = "P:\共通\" End If Workbooks.Open Filename:=myPath & "aaaa.xlsx" こんな書き方でしょうか。 ・・と、ここまで書いてふと思ったのですが、 > ネットワーク上のサーバーであるAD-1から開くのとネットワークドライブPから開くのと と言うのは「Pドライブの設定が無い時には・・」と言う意味でしょうか? Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") If FSO.driveexists("P") Then Pドライブがある時の処理 Else Pドライブが無い時の処理 End If こんなことも出来ますが、参考になりますかどうか。
- tsubuyuki
- ベストアンサー率45% (699/1545)
> 「名前の管理機能」とはExcelの1セルに対して参照 > し決めたbookやsheetの決めた文字などプルダウン機能で選んだり出来る機能です。 なるほど、1セルまたは範囲に対する「名前の定義/管理」のことですね。 失礼しました。 質問としてご提示のコードは、 ブック(aaaa.xlsx)を開いて「Sheet1」をアクティブにする だけのコードに見えるのですが、「名前の定義/管理」が何か関係あるのでしょうか? 開くだけであれば、プルダウンもほぼ関係が無いと思いますが。 的確に補足いただくか、この質問を締め切って関連性を明確にして 改めて質問し直す方が賢明かと思われます。 ちなみに、ご提示のコードですが、当方では単品でどちらも正常に動きます。 同時に動かすとファイル名が競合しますので、当然エラーで止まります。 単品でどちらかが動かないのであれば、考えられる可能性は ファイルのパスが違うか、シートの名前が違うか、どちらかだと思われます。 フルパスを一字一句間違えなく指定する必要がありますので、 エクスプローラーからファイルのプロパティを参照するなどして、ここはご確認ください。 考えやすいパターンは、 \\ad1\●●●\共通\aaaa.xls で、この「●●●」をPドライブに指定しているパターンですね。
補足
はい。 問題は個々で使用すると問題ないのですが 両方を一度に使用したいのです。 どちらでも開くように・・・。 説明不足、説明が下手ですみません。
- tsubuyuki
- ベストアンサー率45% (699/1545)
> AD-1から開くのとネットワークドライブPから開くのとでは > Excelの名前の管理機能が動作しません。 「名前の管理機能」と言うのがどういう機能か、私はわからないのですが・・ とりあえず、 内容が違っていても、保存パスが違っていても、 ブック名が同一であれば同時に開くことは出来ません。 質問文を見ると、 Workbooks.Open Filename:= "\\ad1\共通\aaaa.xlsx" Workbooks.Open Filename:= "P:\共通\aaaa.xlsx" 保存場所は違うようですが、ファイル名はどちらも「aaaa.xlsx」ですね。 なので、これらを同時に動かすことは出来ません。 ファイル名が違うなら、単に続けて書けば良いだけです。 Private Sub Workbook_Open() Workbooks.Open("\\ad1\共通\aaaa.xlsx").Activate Worksheets("Sheet1").Activate Workbooks.Open Filename:= "P:\共通\bbbb.xlsx" Worksheets("Sheet1").Activate End Sub 上下、書き方は違いますが、この場合は同じ動きをします。
補足
保存場所は、同じです。 マイコンピュータのネットワークドライブか ネットワーク上のから開くかの差です。 最終的には同じbookです。 ファイル名も同じです。 「名前の管理機能」とはExcelの1セルに対して参照 し決めたbookやsheetの決めた文字などプルダウン機能で選んだり出来る機能です。
お礼
遅くなりました。 ありがとうございました。