EXCEL VBA: EXCELの終了処理

EXCEL VBAで稼働するシステムを終了する際の処理をメモします。

終了するプログラムは、end.xlsmに記述します。

end.xlsm に shuryo を起動する次のボタンを作ります。

sub shuryo
Application.DisplayAlerts = False  'bookを閉じる際のメッセージを消す
For Each w In Workbooks        '開いてきるワークブックを順に選ぶ
If Not w Is ThisWorkbook Then  '選んだワークブックがend.xlsmでなければ
w.Close SaveChanges:=True  '保存して閉じる
End If
Next w                 '次のワークブックに移る
Application.Quit            'アプリケーションを止める
Workbooks("end.xlsm").Close      'end.xlsm 自身を閉じる
Application.DisplayAlerts = True   'bookを閉じる際のメッセージを復活する
end sub

尚、ワークブックをクローズする際、他のワークブックから参照されていると、
「現在このブックは他のブックから参照されているため、閉じることはできません。」
と表示されます。
その際は、参照している方のワークブックを先に閉じてから、上記の処理を行います。

Open "m_test.xlsm" For Append As #1  '閉じるワークブックをファイル指定で
                       '開いてみる
Close #1                 'すぐに閉じてみる
If Err.Number > 0 Then         'エラーが出たら
Workbooks("m_test.xlsm").Save   'ワークブックを保存して
Workbooks("m_test.xlsm").Close   '閉じる
End If

※誤りがあった場合も責任は取りかねますのでご理解願います。