エクセル実践塾 > エクセル実践塾2007

ブックを閉じるときに、マクロを自動的に実行したい

 

 

 

 

そのブックの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では、[ツール]→[マクロ]→[マクロ]で、実行できるマクロを確認します

Excelの2003や2002、2000で使われる個人用マクロブックは、PERSONAL.XLSです。Excel 2007の個人用マクロブック「PERSONAL.XLSB」とは拡張子が異なります。

@[ツール]→[マクロ]→[マクロ]を実行します。

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