0002. Excel VBA−[Excelブックを閉じる時に、Excelマクロを自動的に実行する。]
Excelブックを閉じる時にいつも定型処理がある場合は、Excelマクロを使用すると便利です。
Workbook_BeforeClose()プロシージャ
Excelブックを閉じようとすると、Microsoft ExcelではWorkbook_BeforeCloseイベントが発生します。
今回は、Workbook_BeforeClose()プロシージャに、次の処理を実装した例を掲載します。
なお、Workbook_BeforeClose()プロシージャは、Microsoft Excel ObjectsのThisWorkbookモジュール内に記述します。
- ブックを閉じる時に、必ず任意のワークシートの任意のセルを選択する。
- ブックを閉じようとする日付をログとして、任意のセルに記録する。
- ブックを閉じようとする時刻をログとして、任意のセルに記録する。
- ブックを閉じようとしたユーザー名をログとして、任意のセルに記録する。
- 警告メッセージの出力を抑止する。
- #Ifディレクティブを使用して、デバッグモードと本番モードで動作を変更する。
《ソースコード》
Option Explicit
#Const RELEASE_VERSION = 1 ' 本番環境の場合は = 1
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' ブックを閉じる時にマクロを自動実行
Dim strSheetName As String ' ワークシート名を格納する文字型変数
Dim strCellAddress As String ' セルアドレスを格納する文字型変数
strSheetName = "Sheet1"
strCellAddress = "A1:A1"
With ThisWorkbook.Sheets(strSheetName)
.Select ' ブックを開いた時に、必ず任意のワークシートを開く。
.Range("B1:B1").Value = Date ' 指定のセルに、現在日付を格納する。
.Range("B1:B1").NumberFormatLocal = "[$-411]ge.m.d;@" ' 日付セルの書式を、"H13.3.14"にする。
.Range("C1:C1").Value = Time ' 指定のセルに、現在時刻を格納する。
.Range("C1:C1").NumberFormatLocal = "h:mm" ' 時刻セルの書式を、"h:mm"にする。
.Range("D1:D1").Value = Application.UserName ' 指定のセルに、ユーザー名(前回保存者)を格納する。
.Range(strCellAddress).Select ' 必ず任意のセルを指定する。
End With
#If RELEASE_VERSION Then
' VBA非デバッグ時
Application.DisplayAlerts = False ' 警告メッセージの出力を抑止する。
ThisWorkbook.Save ' Excelブックを上書き保存する。
#End If
End Sub
ダウンロードはこちら。
※ご注意:ダウンロードされるExcelブックには、Excel VBAによるマクロが記述されています。
update:2008.06.20
□トップページに戻る。□
Copyright (C) 2008 S.IKE