• ベストアンサー

Excel VBAでブックを閉じる時、複数のブックが開いていると・・・。

WinXP+Excel2002なのですが、 ExcelのVBAでつくったアプリの中に、 Application.Quit ThisWorkbook.Close False と記述し、終了させる部分があります。 複数のブックが開いているときにこのプログラムを実行すると、 他のブックまで閉じようとするのですが、 これは何ともならないのでしょうか。 複数のブックを開いた状態でVBEを開くと、 どのブックをアクティブにしておいても、他のブックの モジュールが出てきますよね。これに関係あるのでしょうか。 VBAはそのブックだけに記述することができる・・・のでしょうか? 調べてみたのですがよくわかりませんでした。 基本的なことで恐縮ですが、こんな私にわかるよう 教えてくださる方いらしたらお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

>複数のブックを開いた状態でVBEを開くと、 アドインを除けば、エクセルのウィンドウメニューに表示されたブック名のプロジェクトが表示されます。 複数のエクセルプログラムが起動しているのではなくて、エクセルというプログラムで管理されたファイル(ブック)が表示されています。 >VBAはそのブックだけに記述することができる・・・のでしょうか? VBAのコード(モジュール)はブック単位で管理しています。 しかし、動作が影響するのは「エクセル上」ですから、記述したブックだけと言うことはできません。 しかし、動作範囲を限定させたりそれを考慮したプログラムを書くことは可能です。 「Application」はエクセルの機能を指すので、「.Quit」させると、同時に開いているブックも閉じてしまいます。(エクセルアプリケーションの終了) 「ThisWorkbook」は、VBAが実行しているブックの事なので、「.Close」しても他のブックに影響する事はありません。 workbooks.count で、同時に開いてるブックの数が解ります。 1かそれ以外で処理を分ける事で、今回の件は解決(回避)が可能です。 プログラムの動作が理解出来ていて、実際の使用時の事を考慮した場合、ご呈示のようなプログラムを書くことはまず無いでしょう。

noname#101292
質問者

お礼

ありがとうございます。 下にも書いたのですが、色々調べていて、 ブックを閉じるだけでは不足で、 Application.Quitを記述しなければいけないというような つもりでいました。 実際にはそんな事なくて、ブックを閉じれば事足りるのでしょうか。 今までは他のブックを開く事はない環境だったのですが、 偶然この間そうなって気づきました。 回避策をご教示くださりありがとうございました。

その他の回答 (1)

回答No.1

こんにちは >Application.Quit してるからでは? 現在実行中のマクロコードが記述されているブック ThisWorkbook.Close 一番手前に表示されているアクティブなブック ActiveWorkbook.Close のどちらかで行けると思います。

noname#101292
質問者

お礼

ありがとうございます。 あっ。 そうですね・・・。 実は、色々調べていて、ブックを閉じるだけでは不足だというような 記述を見かけて、 Application.Quitを記述しなければいけないのかと思っていました。

関連するQ&A