• ベストアンサー

【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003 マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。 ThisWorkbook.Close ExcObj.Quit Application.Quit どこか悪いところはありますでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

普通に考えれば質問者のコードで上手くいきそうですが hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので Application.QuitをThisWorkBook.Closeの前にもってこないといけません。 Application.Quitはそれがあるプロシージャのコードが全て終わるまで その実行を保留するちょと特別動作をします。 '-------------------------------------  Application.Quit  ThisWorkbook.Close '-------------------------------------    

motsu2006
質問者

補足

できました。 ありがとうございました。 追加で質問なんですがよろしいでしょうか? - 他のエクセルブックが開いている場合、 自分自身は閉じるけどアプリケーションは終了しない - という感じでコーディングするにはどうすればよいでしょうか? よろしくお願いします。

その他の回答 (3)

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

>- 他のエクセルブックが開いている場合、 自分自身は閉じるけどアプリケーションは終了しない - Workbooks.Count で開いているブックの数を得る事ができます。 ただし、個人用マクロブック等見えないブックが開いている場合もカウントされるため、こ使用環境によってはのチェック方法だけでは不十分になるので、正しく動作しない可能性もあります。 If Workbooks.Count = 1 Then Application.Quit End If ThisWorkbook.Close

motsu2006
質問者

お礼

ご回答、ありがとうございます。 バッチリ、できました! 懸念されている(ご心配いただいている) >ただし、個人用マクロブック等見えないブックが開いている場合もカウントされるため、こ使用環境によってはのチェック方法だけでは不十分になるので、正しく動作しない可能性もあります。 ↑こちらですが、実際に使用するのは開発などまったく行わない事務員なので心配はないかと思います。 ありがとうございました。

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

>自分自身は閉じるけどアプリケーションは終了しない と、いうことは、起動しているエクセルはひとつで その作業領域の中で複数のブックが開いている状態で その中のコードが書いてあるブックのみを閉じたいということですよね。 であれば、   ThisWorkBook.Close のみでOKです。

motsu2006
質問者

お礼

再度ご回答いただき、ありがとうございます。 実際に使用するのはマクロを組む等開発などを行わない事務員で、 使用時にいくつエクセルブックを開いているかわからない、指定もできないわけで……。 そういう意味で開いているブックの数で ・アプリケーション自体を閉じるのか ・エクセルブック(自分自身)を閉じるだけにするのか 処理を分岐させたかったのです。 本当にありがとうございました。

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

>ThisWorkbook.Close 実際には、この部分でマクロの実行が終わって仕舞う(コードが書かれたブックが閉じる=コードが書かれたブックが消滅)ので、それ以降のコードは実行されません。 Application.Quit を実行する事で、エクセル(本体)を終了出来ます。

motsu2006
質問者

お礼

お早いご回答、ありがとうございました。 できました!助かりました。

関連するQ&A

  • Excelの、マクロ終了時にExcel本体も閉じたい

    Excelの、マクロ終了時にExcel本体も閉じたいのですが、 どのようなコマンドを埋め込んだらいいのでしょうか? Application.Quit では、Bookは閉じますが、Excel本体は残ってしまいます。 よろしくお願いいたします。

  • EXCELブックを保存しないで終了

    EXCEL2000で"A"というブックから"B"というブックを マクロのVBAから開きます。 両方のシートが開いた状態から,"B"のマクロより 両方のブック共に保存しないで、EXCEL自体終了するマクロ を"B"側に下のような感じで作成しました。 -------- EXCEL終了処理 ------------------ Application.DisplayAlerts = False ThisWorkbook.Saved = False Application.Quit ---------------------------------------- これで終了しようとすると、「"B"のブックを保存しますか?」というメッセージが表示されてしまいます。終了前のマクロ処理の中で"B"ブックを変更しているので、このようなメッセージが表示されると思うのですが、 Application.DisplayAlerts = False 命令は利かないのですか? どなたか教えて下さい。宜しくお願い致します。

  • excel2000の終了

    下記のVBAで Workbooks("book1.XLS").Close SaveChanges:=False Application.Quitを書いていますが、 book1.xlsは保存しないで閉じた後にEXCELを終了させる 方法を教えてください。

  • マクロ実行後エクセルを閉じたい

    2つの別々のファイルを開いて片方からもう片方にコピーして 保存して終了する。(両方とも閉じる) というマクロを作ったのですが コピー終了後に実行したマクロ付きのエクセルも閉じてデスクトップ上には何も開いていない状態にしたいのですがworkbookのところに 下記の命令を記述してもうまくいきません。 Application.Run "XXXXXX" ThisWorkbook.Save ThisWorkbook.Saved = True If Workbooks.Count <= 1 Then Application.Quit ThisWorkbook.Close False マクロ付きのエクセルも一旦は閉じるのですがその後に 別の白紙のブックが開いてしまうのです。 続けて他のマクロをスケジュールで実行したいのですが実行時に 「既にエクセルが開いています」みたいな警告が表示され 実行できません。 エクセルを完全に閉じるようにするにはどうしたらいいのでしょうか?

  • Excel-VBAでアプリケーションエラー

    現在、Excel-VBAで作成されたマクロの保守を行っております。 このマクロで現在、アプリケーションエラー(問題が発生したため、Microsoft Excelを終了します。・・・)が発生しています。処理の内容を調べると、以下の通りです。 (1)ブックAのマクロで、ブックBを開く (2)ブックAで、自ブックをクローズする。 (3)アプリケーションエラーが発生。 (4)(3)の時点では、ブックBのみ開いており、アプリケーションエラーのダイアログで、Excelを再起動をチェックし、「送信しない」を選択するとブックBが一旦閉じられ、その後ブックBが開かれる。 →したがって、異常終了しているのは、ブックBと想定される。 この事象を回避する方法をどなたかご存じありませんでしょうか?

  • EXCELを自動的に終了したい

    VBAマクロで処理をして、終了後に開いたブックを自動的に終了させるため、 Application.Quit を使用しましたが、 他に開いていたブックも終了してしまいます。 ActiveWorkbook.Close に変更すると、 他にブックを開いていない場合、自動的にブックは終了しますが、EXCELが終了しません。 該当のブックだけを終了することは、できないでしょうか?

  • エクセルマクロで、別のブックが開いているかを判定したいのですが。

    いつもお世話になっております。 マクロで質問なのですが、マクロを終了する際に Application.Quit  で終了していましたが、これだとマクロ起動前に別のブックが 開いているとそのブックまで閉じてしまいます。 マクロを起動した際に、別のブックが開いているかを判定して Application.Quit か close を使い分けて終了させたいのですが、 判定する為にはどのようにすればよいのでしょうか? よろしくお願い致します。

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

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

  • VBA Auto_Close複数ブックを閉じれない

    Auto_Closeについて教えて下さい。 Auto_Closeで、指定のブックを一緒に閉じる処理を 書きましたが、エクセル自体を終了できません。 Workbook_BeforeCloseでも試しましたが、うまく処理 できません。エクセル本体も終了させたいです。 どのように記述したらよいでしょうか? 宜しくお願い致します。 コード Private Sub Auto_Close() '指定のブックを閉じる(すでにAAAファイルは開いている状態) Application.Windows("AAA.xlsx").Close False Application.Quit End Sub

  • Excel VBA 終了時の処理

    Excelを終了時にフルスクリーン(リボンなどが非表示の状態)から解除するコードを書きたいのです。 Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.DisplayFullScreen = False 'フルスクリーン化解除 End Sub というコードを書きましたが、Excel自体を×ボタンでクローズした場合は正常に動きますが、 Excelを起動したままPCをシャットダウンすると解除されません。 次回Excelファイルを開くときにはフルスクリーンで出てきてしまいます。 シャットダウン時には、Excelも勝手にクローズされ、その際にマクロが動くものだと思っていましたが... これを回避するコードなどありましたらご教授ください。 環境:windows7 Excel2010 (2013でも動くようにしたいです)

専門家に質問してみよう