- ベストアンサー
「Workbooks.Open」の動作について
いつも参考にさせてもらっています。 VBAで別のブックを開こうとして、 Workbooks.Open "WorkBook.xls" Msgbox "開きました。" と記述しました。 ですが、「WorkBook.xls」ファイルは開くのですが 次のメッセージボックスが表示されません。 デバッグ実行すると、「Workbooks.Open」でファイルが開かれた後、 処理が終了されているみたいです。 どうしても原因がわからず、先に進むことができません。 どうすれば、ファイルも開き、メッセージボックスも表示されるのでしょうか? 皆様のお力をお貸し下さい。 お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。#1のWendy02です。 >相変わらずメッセージボックスは表示されませんでした。 ところで、少し、気になっているのは、Excelのバージョンは、いくつですか? 今は、旧バージョンでは調べていないのですが、いずれにしても、詳しく調べてみないとはっきりしないことがいくつかあります。 Visual Basic Editor 画面を出したまま、そのマクロをステップマクロ(F8)で、調べたら、どこかにマクロが移っているのかもしれません。たぶん、ステップマクロでは、元のマクロには戻らないかもしれませんが、次に、どこに入るかは分かります。 また、MsgBox は、次に行の、その場所でなくてはならないのか、作業など一段落してからでもよいと思います。MsgBox は、ある意味で対話形式になりますから、その場所で止まるのは、あまり効率的なマクロとは言えません。MsgBox なしなら、どうなりますか? Excelの特殊な設定されたブックは、無理です。だいたいは、開く側のブックの性質にもよるのではないかと思います。私は、開かれる側から開く側のマクロを止める方法は、いくつか分かります。 ここのコーナーでも、ずっとダメだししている質問で、DDEリンクやActive X コントロールを使って、外部通信でExcelのファイルにデータを入れている状態では、いくらがんばっても、インターラプト(中断)が入りますから、マクロは途中で終わってしまいます。確か、1秒~5秒周期だっと思います。 これは、私の方の例で、めったにありませんが、かなり短い周期で自動保存をしてまいすが、私のマクロでも、外部からデータを取るマクロは、同じ同期が重なると、マクロは途中で止まるだけでなく、そのブック自体が閉じてしまいます。外部からインターラプトされない方法もありますが、あまりダメ元でやるのは、まずいろいろ調べてからにしたいです。 もう少し詳しい状況を教えてください。
その他の回答 (2)
- shinkami
- ベストアンサー率43% (179/411)
VBA編集画面で Project枠でThisWorkbookを選択して、コーディングウィンドの左枠でWorkbookを選択して右枠でイベント(Open)を選択して 例えば Private Sub Workbook_Open() MsgBox "開きました。" End Sub ではダメでしょうか
お礼
別作業に取り掛かった為、時間があいてしまい申し訳ありません。 その為この現象も解決する必要がなくなってしまいました。 後味が悪いですが、再度必要になった時に改めて考えることにします。 色々とありがとうございました。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 Workbooks.Open "WorkBook.xls" それは、『"WorkBook.xls"』の問題ですね。開くと、マクロを帳消しにするコードが入っているのだと思います。 Application.EnableEvents = False Workbooks.Open "WorkBook.xls" MsgBox "ファイルオープン" Application.EnableEvents = True もしかしたら、こうすれば、通るかもしれません。
お礼
早速のご回答ありがとうございます。 ご指摘のとおりに試してみたのですが、 相変わらずメッセージボックスは表示されませんでした。 他の原因みたいですね。 もう少し悩んでみます...
お礼
別作業に取り掛かった為、時間があいてしまい申し訳ありません。 その為この現象も解決する必要がなくなってしまいました。 後味が悪いですが、再度必要になった時に改めて考えることにします。 色々とありがとうございました。