• ベストアンサー
  • 暇なときにでも

EXCEL VBA で終了出来ますか?

いつもお世話になります。 OfficeXPを使用しています。 EXCELのVBAでファイルを開き、定型処理をさせているのですが、定型処理完了後にEXCELを終了させたいと思っています。しかしEXCELの終了マクロをうまく作ることが出来ません。(終了時のメッセージを出さないようにしたいです) ActiveWorkbook("test.xls").Closeで終了させようとしたのですが、「test.xlsを保存しますか」というメッセージが出てきてしまいます。メッセージを出さずになおかつ保存せずに終了させたいのですが、何方か良い方法を教えて頂けないでしょうか?

共感・応援の気持ちを伝えよう!

  • 回答数5
  • 閲覧数775
  • ありがとう数5

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

  • ベストアンサー
  • 回答No.4
  • ja7awu
  • ベストアンサー率62% (292/464)

No.2ですが、ちょっと簡単過ぎましたので、補足です。 Application.DisplayAlerts = False Workbooks("test.xls").Close savechanges:=True Application.DisplayAlerts = True 一応、この後のコードが分かりませんので DisplayAlerts = True と戻しています。 なお、Excel自体を終了するのであれば、 Application.Quit 

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 体調不良のため、早々に退社しましたので自宅のPCで間単にチェックしたところ上手くいきそうでした。 明日、実際のファイルで確認してみようと思います。 とても親切に説明して頂き感謝いたします。 どうもありがとうございました。

関連するQ&A

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

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

  • エクセルのマクロで保存して終了が出来ない

     あるエクセルファイルにて、VBAで Sub 保存して終了() ActiveWorkbook.Save ActiveWorkbook.close End Sub  というマクロを作成したのですが、1回目は正常に動いたのですが次からは、そのマクロを動かしても画面が一瞬点滅するだけで、上書き保存も終了もしません。  それで、ファイルを別の名前をつけて保存してその、別の名前で保存したファイルで、また上のマクロを動かすと1回目は正常に動くのですが、やはり次に開くと動かなくなります。  因みに他のマクロは正常に動作し、この保存して終了させるマクロだけが変なのです。  マクロの書き方を変えて以下のようにしてもだめでした。 Workbooks("ナントカ.xls").Close savechanges:=True  やはり、何回書き方を変えても保存して終了させることだけが出来ません。普通にマクロを使用せず手動ですることは出来るのですが…。  分かりにくい説明ですみませんが、よろしくお願いします。

  • Excel 2010 VBA の変な異常終了

    Excel VBA で 今まで いろんなマクロを作ってきましたが、今回 新しく購入したパソコン(Windows 7  Excel2010  本体メモリー8GB) で繰り返しのあるマクロを作成しましたが、3回目でピーと音がして エラーメッセージを出さずに異常終了する変なエラーが発生しました。 そこで Msgbox で 2回ごとに 確認メッセージで中断するようにすると、 正常に動作します。 また このマクロを 別のパソコン(Windows XP Excel 2003)用に 拡張子 XLS に 変換して実行すると、Msgbox で 中断しなくても、正常に動きます。 Windows7 Excel2010 のパソコンでは これとは別のマクロでも、同じような 変に異常終了するエラーを数回経験しています。 どうも少し長いマクロや、繰り返しの数回目で発生したりするようです。 教えてGoo の質問には Excel 2003で作成したマクロがExcel 2010で エラーになる質問が多くありますが、今回のエラーは、Excel2010 で作成した マクロであり、Msgbox で 2回ごとに 中断すれば、Excel2010 でも正常に 動く事からも Excel 2003 との関係ではないようです。 2010になってパソコンの処理速度にVBA処理が間に合っていないでは? と思われるので、 Wait命令を入れて5秒ほど待つようにしてもダメです。 また Windows7 になって 標準本体メモリー4GBでは Excel2010 の マクロには不足かと思い8GB に追加しましたがこれもダメでした。 最新のパソコンのスピードにExcelマクロが追い付いていないのか? マクロ処理用の 計算領域が不足(本体メモリーとは関係なく)? のような気がします。 現在は Msgbox で中断することで対応していますが、実際の繰返回数 は非常に多く何回も OKボタン を押す必要があり。困っています。 Excel 2010 になって同じようなエラー事例があるのではないでしょうか? 対応法があれば是非教えてください。 (エラー確認用に、マクロ、関係サンプルデータが必要であれば添付します)

その他の回答 (4)

  • 回答No.5
  • ja7awu
  • ベストアンサー率62% (292/464)

あっ、ごめんなさい。「保存しないで」ですから savechanges:=False でした。

共感・感謝の気持ちを伝えよう!

  • 回答No.3
  • sacoman
  • ベストアンサー率56% (33/58)

close メソッドではEXCELを終了させることはできません。 ワークブックを閉じるだけです。ワークブックを閉じる だけなら、#1さんが回答されているように、FALSEオプションを 入れておけば、保存せずに閉じることができます。 EXCELを終了するには、quitメソッドを使います。 完全に開いているワークブックを保存せず、確認メッセージも表示 させずにEXCELを終了させるのであれば、以下のような感じになります。 Sub sample()   Application.DisplayAlerts = False   Application.Quit End Sub

共感・感謝の気持ちを伝えよう!

  • 回答No.2
  • ja7awu
  • ベストアンサー率62% (292/464)

その手前に Application.DisplayAlerts = False を記述してみたら如何でしょうか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 体調不良のため、早々に退社しましたので自宅のPCで間単にチェックしたところ上手くいきそうでした。 明日、実際のファイルで確認してみようと思います。 どうもありがとうございました。

  • 回答No.1
  • popesyu
  • ベストアンサー率36% (1782/4883)

Close メソッドに限りませんが、どのメソッドを使えばよいのか当たりがついているのなら、この手のところで質問するよりもヘルプを読んだ方がさっさと解決します。先にヘルプを読む癖をつけましょう。 以下ヘルプから抜粋です。 --- ・Workbook オブジェクトに指定した場合 expression.Close(SaveChanges, Filename, RouteWorkbook) SaveChanges 省略可能です。バリアント型 値:動作 True:ブックの変更を保存します。ブックにファイル名が付けられていない場合は、引数 FileName を使ってファイル名を指定します。引数 FileName を省略すると、ファイル名の入力を促すダイアログ ボックスが表示されます。 False:ファイルの変更を保存しません。 省略:変更したファイルを保存するかどうかを確認するダイアログ ボックスが表示されます。 --- ということでこれで解決です。 ActiveWorkbook.Close(False)

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 おっしゃるように事前にヘルプは確認したのですが、ブックを閉じる場合のヘルプはあったのですが、エクセルを終了させるヘルプが探せませんでした。 こちらの意図した回答とは違いましたが、丁寧に回答いただき感謝いたします。

関連するQ&A

  • VBAで生成されたExcelファイルの閉じ方

    VBAで以下の処理を書いています。 ・Excelオブジェクトを生成する。 ・Excelファイルをオープンする。 ・各行を読取、Accessのテーブルに挿入する。 ・終了 といった処理を行っています。終了する前に読取ったExcelの オブジェクトを終了しないといけないと思っています。 Workbook.Close Set Workbook = Nothing とやると、Workbook.Closeの所でファイルを保存しますかといった メッセージが出てきます。単純に開いていたファイルを閉じたいだけ なのですが、どういった処理を書けばExcelのファイルを何もメッセージを 表示せずに閉じることができるでしょうか?

  • VBAでExcelの保存終了を取得したい

    こんばんは。 Accessから、Excelへデータを渡し、保存をして終了というものを作っています。 *************Access側 Set Excel = New Excel.Application Set book = Excel.Workbooks.Open("c:\Sample.xls") '一時的にデータをためるExcelファイル Set Sheet = book.Worksheets(1) ・・・・・データを吐き出し、書式を変更する処理・・・・・ Excel.Run book.Name & "!Macro_Go" 'Sample.xlsからAドライブのExcelファイルへシートコピー book.Save Excel.Quit ************************* Access側でExcelファイルのマクロを操作し、Excelのファイルは、Aドライブ(フロッピー)へ保存することとなります。 保存の際に、非常に時間がかかり、完了時にメッセージを出したいのですが、 保存が完了する前に、完了メッセージが出てしまいます。 そこで、Excelで保存が完了したという状態を取得できないかと考えています。 どういう方法を使えば、Excelの保存完了状態を取得できますでしょうか?

  • Excelの終了処理について

    Excel がMDIで複数のワークブックが動作しています。 そして、ExcelのXマークを押して終了する場合の処理についてです。 いま、aaa.xls とbbb.xlsが同時に起動しています。ExcelのXマークで全部閉じるボタンを押します。 aaa.xls のWorkbook_BeforeClose で終了処理をします。 その後bbb.xls(マクロなし)で、保存しますかのダイアログがでますが そこで、キャンセルを行った場合、aaa.xlsは終了せずに残ってしまいます。 すでに、aaa.xlsは終了処理で、メニューの戻しやデータのクリアがおこなわれているのでその後、整合性が合わなくなります。 Excelの終了処理は、どのような手順を踏めばよいのでしょうか。 基本的な質問で申し訳ありませんが、宜しくお願いします。

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

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

  • Excel VBA で困っています。

    Excel VBA で困っています。 下記のプログラムで、「名前を付けて保存」→「キャンセル」 を選択した場合のエラーは回避できたのですが、 「名前を付けて保存」→「保存」→「同じ名前のファイルが既に ありますが置き換えますか?」→「いいえ(またはキャンセル)」 の時にエラーが出てしまいます。 どう直したら良いでしょうか。 よろしくお願いいたします。 Public Sub SaveBook() Dim myBook As Variant '「名前を付けて保存」ダイアログ myBook = Application.GetSaveAsFilename("test.xls", _ "Excelファイル,*.xls", , "Excelブックを保存") 'キャンセル時の処理 If StrConv(myBook, vbUpperCase) = "FALSE" Then Exit Sub 'ブックの保存 ActiveWorkbook.SaveAs Filename:=myBook End Sub

  • エクセルの終了

    お世話になります。 VBAでエクセルを終了する時、下記の様な記述をして 終了するのですが、エクセルのブラウザは残ります。 エクセル毎終了する記述方法についてご教授頂きたく 何卒、宜しくお願い申し上げます。        記 Workbooks("---.xls").Close savechanges:=False

  • excel2000の終了

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

  • エクセルを終了

    お世話になります。 エクセルVBAでエクセルを終了する時、下記の様な 記述をしていますが、そのファイルしか終了出来ません。 エクセルのアプリケーション自体を終了したいのですが、 その記述方法をご教授頂けないでしょうか。 宜しくお願い致します。      記 Workbooks("---.xls").Close savechanges:=False

  • エクセルファイル(book)のシートの内容をCSVファイルにおとしたい

    こんにちは。 VB初心者です。 実はVBではなく、Excel VBAで行なっているのですが。 ここに質問していいかもよく分かってないのですが。 プログラムの処理としては、あるBookのシートの内容を 別のCSVファイルとして生成したいのです。マクロを組んだのですが、一つ問題があって困っています。 問題: 生成したCSVファイルが一度Window上に表示されて (それはいいのですが、あとで閉じますから) 以下の確認メッセージがでてしまいます。 「outFile.csvはExcel97のファイル形式では、ありません。変更を保存しますか?」 要はプログラムがここで、一旦ユーザアクションを要求してしまうのです。 アクションなしに普通に終了させたいのですが。 マクロではなくVBだったらこんなことはならないのでしょうか? 初心なのでよく分かりません。 もしくはもっとほかの簡単なコードできるのでしょうか。 以下にコードを記述します。 Sub OutFile() Dim myWBpath As String myWBpath = ActiveWorkbook.Path Workbooks.Open FileName:=myWBpath & "\testData1.xls" Sheets("sheet1").Select ActiveWorkbook.SaveAs FileName:="C:\outFile.csv", _ FileFormat:=xlCSV, CreateBackup:=False ActiveWorkbook.Close End Sub

  • Excelのマクロの命令文を教えてください

    EXCEL2002です。 仮にAAA.XLSを開いて書込をしその内容をマクロでWTTOTAL.XLSに転記し又AAA.XLSに戻ります。ここまでの進行は何とかマクロが作れました。その後AAA.XLSより終了マクロを下記のように作りました。 Sub SHUURYOU() Windows("WTTOTAL.XLS").Close SAVECHANGES:=True ActiveWorkbook.Save Application.Quit End Sub この場合うまく働いてくれますが時にAAA.XLSだけで作業が終わることがあります。するとWTTOTAL.XLSが開いていないのでエラーになります。WTTOTAL.XLSが開いていてもCLOSEの時でもかのマクロを働かすにはどのような命令文を何処に付け加えればいいのでしょうか。 よろしくお願いします。