そのブックのWorkbook.BeforeClose イベントに、マクロを実行するコードを記述します
Workbook.BeforeClose
イベントは、そのブックを閉じる前に発生します。そこで実行されるマクロは、ブックを閉じようとしたときに処理され、マクロを実行し終わるとブックが閉じられるようになります。
@Visual Basic Editorに切り替えて、ブックの[ThisWorkbook]をダブルクリックします。
そのブックの[ThisWorkbook]のコードウィンドウが表示されます。

※Visual Basic
Editorのマクロ編集画面に切り替える方法がわからない場合は、前々号を参照してください。
Aオブジェクトを「Workbook」にして、プロシージャを「BeforeClose」にします。
イベントへのマクロの記述は、専用のプロシージャで行います。オブジェクトとプロシージャを指定すると、それに応じたプロシージャがコードウィンドウに追加されます。

BExcelの編集画面に切り替えて、実行するマクロの名前を確認してコピーします。
マクロは、その名前を正確に記述しなければ実行できないので、マクロの名前を確認してコピーします。
マクロの名前は、[開発]タブ→[マクロ]ボタンで確認できます。一覧からマクロを選択すると、[マクロ名]欄にその名前が表示されるので、それを選択して右クリックし、ショートカットメニューから[コピー]を選びます。
Excelの2003や2002、2000では、[ツール]→[マクロ]→[マクロ]で、実行できるマクロを確認します

Cマクロの編集画面に戻って、BeforeCloseイベントに次のようなコードを記述します。
マクロの名前は、[貼り付け]ボタンで記述します。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Run "PERSONAL.XLSB!MultiSave"
End Sub
実行するマクロの名前は、半角のダブルコーテーション(")で囲んで記述します。
Application.Run メソッドは、マクロの実行を行うためのコードです。個人用マクロブック「PERSONAL.XLSB」は、Excelの利用時には必ず開かれるブックなので、フルパスでファイル名を記述しなくてもマクロの実行が可能です。
D前号のマクロを実行する場合には、次のコードを削除しておきます。
Sub MultiSave()
'
' MultiSave Macro
' 異なる2つのフォルダに保存
'
'
Application.DisplayAlerts = False
ActiveWorkbook.Save
ActiveWorkbook.SaveAs Filename:="J:\" & ActiveWorkbook.Name
ActiveWindow.Close
Application.DisplayAlerts = True
End Sub
ブックを閉じるときにマクロが実行されるので、ブックを閉じる「ActiveWindow.Close」のコードは必要ありません。
E修正したマクロは、次のようになります。
Sub MultiSave()
'
' MultiSave Macro
' 異なる2つのフォルダに保存
'
'
Application.DisplayAlerts = False
ActiveWorkbook.Save
ActiveWorkbook.SaveAs Filename:="J:\" & ActiveWorkbook.Name
Application.DisplayAlerts = True
End Sub
Excelの2003や2002、2000で使われる個人用マクロブックは、PERSONAL.XLSです。Excel 2007の個人用マクロブック「PERSONAL.XLSB」とは拡張子が異なります。
@[ツール]→[マクロ]→[マクロ]を実行します。

A[マクロ名]欄でショートカットメニューを表示できない場合は、Ctrl+Cのショートカットキーでコピーします。
