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

いつも参考にさせてもらっています。
VBAで別のブックを開こうとして、
 Workbooks.Open "WorkBook.xls"
 Msgbox "開きました。"
と記述しました。
ですが、「WorkBook.xls」ファイルは開くのですが
次のメッセージボックスが表示されません。
デバッグ実行すると、「Workbooks.Open」でファイルが開かれた後、
処理が終了されているみたいです。
どうしても原因がわからず、先に進むことができません。
どうすれば、ファイルも開き、メッセージボックスも表示されるのでしょうか?
皆様のお力をお貸し下さい。
お願いします。

A 回答 (3件)

VBA編集画面で


Project枠でThisWorkbookを選択して、コーディングウィンドの左枠でWorkbookを選択して右枠でイベント(Open)を選択して

例えば

Private Sub Workbook_Open()
MsgBox "開きました。"
End Sub

ではダメでしょうか
    • good
    • 0
この回答へのお礼

別作業に取り掛かった為、時間があいてしまい申し訳ありません。
その為この現象も解決する必要がなくなってしまいました。
後味が悪いですが、再度必要になった時に改めて考えることにします。

色々とありがとうございました。

お礼日時:2007/04/26 13:08

こんばんは。

#1のWendy02です。

>相変わらずメッセージボックスは表示されませんでした。
ところで、少し、気になっているのは、Excelのバージョンは、いくつですか?

今は、旧バージョンでは調べていないのですが、いずれにしても、詳しく調べてみないとはっきりしないことがいくつかあります。

Visual Basic Editor 画面を出したまま、そのマクロをステップマクロ(F8)で、調べたら、どこかにマクロが移っているのかもしれません。たぶん、ステップマクロでは、元のマクロには戻らないかもしれませんが、次に、どこに入るかは分かります。

また、MsgBox は、次に行の、その場所でなくてはならないのか、作業など一段落してからでもよいと思います。MsgBox は、ある意味で対話形式になりますから、その場所で止まるのは、あまり効率的なマクロとは言えません。MsgBox なしなら、どうなりますか?

Excelの特殊な設定されたブックは、無理です。だいたいは、開く側のブックの性質にもよるのではないかと思います。私は、開かれる側から開く側のマクロを止める方法は、いくつか分かります。

ここのコーナーでも、ずっとダメだししている質問で、DDEリンクやActive X コントロールを使って、外部通信でExcelのファイルにデータを入れている状態では、いくらがんばっても、インターラプト(中断)が入りますから、マクロは途中で終わってしまいます。確か、1秒~5秒周期だっと思います。

これは、私の方の例で、めったにありませんが、かなり短い周期で自動保存をしてまいすが、私のマクロでも、外部からデータを取るマクロは、同じ同期が重なると、マクロは途中で止まるだけでなく、そのブック自体が閉じてしまいます。外部からインターラプトされない方法もありますが、あまりダメ元でやるのは、まずいろいろ調べてからにしたいです。

もう少し詳しい状況を教えてください。
    • good
    • 0
この回答へのお礼

別作業に取り掛かった為、時間があいてしまい申し訳ありません。
その為この現象も解決する必要がなくなってしまいました。
後味が悪いですが、再度必要になった時に改めて考えることにします。

色々とありがとうございました。

お礼日時:2007/04/26 13:08

こんにちは。



 Workbooks.Open "WorkBook.xls"
 
それは、『"WorkBook.xls"』の問題ですね。開くと、マクロを帳消しにするコードが入っているのだと思います。

Application.EnableEvents = False
Workbooks.Open "WorkBook.xls"
 MsgBox "ファイルオープン"
Application.EnableEvents = True

もしかしたら、こうすれば、通るかもしれません。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

ご指摘のとおりに試してみたのですが、
相変わらずメッセージボックスは表示されませんでした。
他の原因みたいですね。

もう少し悩んでみます...

お礼日時:2006/11/09 16:46

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