- 締切済み
エクセルの終了マクロ
エクセルのマクロの記述で、 処理が終われば、マクロを記述しているエクセル自体を終了(ワークブックではなくアプリケーション)させたいのですが、できるでしょうか?
- みんなの回答 (9)
- 専門家の回答
みんなの回答
- Yeti21
- ベストアンサー率47% (396/830)
マクロを含んだブックがCloseされていなければ大丈夫なはずです。 そのマクロを表示して、最初の行をクリックして「F9」キーを押してブレークポイントを設定してから そのマクロをいつもどおり実行してみて下さい。 実行すると、そのブレークポイントで停止しますので、後は「F8」キーを押すごとに1行ずつ 実行されますのでそれで進めていって下さい。 実行過程を見ながら、最後に何が実行されているのか? 問題の、Quitまで実行されているのかどうか、確認して下さい。 試しに、以下のようなマクロを作成して実行してみましたが問題無く処理した後、終了しました。 Sub test() Application.DisplayAlerts = False Workbooks.OpenText FileName:="sample.xls" Columns("C:D").Select Selection.Delete ActiveWorkbook.SaveAs FileName:="sample.xls", FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False ActiveWorkbook.Close (False) Application.Quit End Sub
- Yeti21
- ベストアンサー率47% (396/830)
少し補足しておきます。 試してみてもらえばわかると思いますが、マクロを含んだブックを先にCloseしてしまうと、 マクロがそこで中断してしまいます。 ですから、CloseせずにQuitして下さい。 厳密に言えば、下記の一行が余計であると思われます。 ThisWorkbook.Close (False)
- Yeti21
- ベストアンサー率47% (396/830)
必要なものを保存した後、ブックをCloseせずに下記を実行するようにしてみてください。 Application.DisplayAlerts = False Application.Quit
- onlyrom
- ベストアンサー率59% (228/384)
Application.Quitで閉じないということはありませんので、 そのコードを置いている場所に問題がありそうです。 Application.Quitを置いてる場所のモジュールを全てアップしてください。 そうすれば原因の特定が出来ます。
補足
こんな感じです。 --------------------------- Sub Macro1() Application.DisplayAlerts = False Workbooks.OpenText Filename:="c:\○○○.xls" Columns("C:AZ").Select Selection.Delete ActiveWorkbook.SaveAs Filename:="c:\○○○.xls", FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False Application.DisplayAlerts = True ActiveWorkbook.Close (False) ', "c:\○○○.xls") ThisWorkbook.Close (False) Application.Quit End Sub ------------------------
- Yeti21
- ベストアンサー率47% (396/830)
No.2です。 通常、QuitでEXCEL自体が終了するのですが、終了しないとのことで、 何もメッセージも出ないのでしょうか? 開いているブックはひとつだけでしょうか? 下記のようにしても同じでしょうか? Application.DisplayAlerts = False Application.Quit ※上記では、複数のブックを開いていても全てのブックで保存せずに終了します。
補足
マクロで別ファイル(A)を呼び出して、マクロで自動編集し、上書き保存させています。 その後、ファイル(A)とマクロを記述したエクセルファイル(B)とエクセル自体(アプリケーション)を完全に終了させたいのですが、AとBは終了するのですが、エクセルが終了しません。 御教示頂いた上記コードでも結果は同じでした。 メッセージも出ません。
- mshr1962
- ベストアンサー率39% (7417/18945)
保存する場合 ActiveWorkbook.Save '上書き保存 ActiveWorkbook.Application.Quit '閉じる処理 保存しない場合 ActiveWorkbook.Saved = True '保存の確認をパス ActiveWorkbook.Application.Quit '閉じる処理
- FEX2053
- ベストアンサー率37% (7991/21371)
APPLICATION.QUIT で終了するはずです。 ただし、ブックが未保存だと「保存しますか」ダイアログが出て きますので、先に保存処理を行っておく必要があります。
- Yeti21
- ベストアンサー率47% (396/830)
できますよ。 Application.Quit で終了します。 ただし、ブックの内容が変わっていたりすると保存するか聞いてきます。 保存しないのであれば、Quitの前に、 ActiveWorkbook.Saved = True というように保存したことにして終了しますし、 ActiveWorkbook.Save のように保存しても良いです。
Application.Quit でどうかしら?
補足
回答ありがとうございます。 Application.Quitを書いているのですが、 ワークブックは閉じますが、エクセル自体は終了しないんです。
補足
何度もすいません。 ThisWorkbook.Close (False) も消したのですが、状況は変わりませんでした。