Option Explicit
’PERSONAL.XLSBのThisWorkbookへ保存
'// Excelのイベント検知
Dim WithEvents x As Application
'// PERSONAL.XLSBが開いたとき
Private Sub Workbook_Open()
'// Excelアプリケーションのイベントを検知する
Set x = Application
End Sub
'// ブックが開いた場合
Private Sub x_WorkbookOpen(ByVal Wb As Workbook)
Call OutputHistory(Wb, "Open")
End Sub
'// ブックを保存後
Private Sub x_WorkbookAfterSave(ByVal Wb As Workbook, ByVal Success As Boolean)
'// 保存失敗時
If Success = False Then
Exit Sub
End If
Call OutputHistory(Wb, "Save")
End Sub
'// 履歴書き込み
Private Sub OutputHistory(ByVal Wb As Workbook, a_sType As String)
Dim sNow As String '// タイムスタンプ
Dim sPath As String '// ファイルパス
Dim n As Integer '// ファイル番号
'sPath = Application.DefaultFilePath & "\Excel-log.txt"
sPath = "D:\Backup(XLSTART)\Excel-log.txt"
'// 履歴ファイルが存在する場合
If Dir(sPath) <> "" Then
'// 履歴ファイル名が指定サイズを超過している場合
If FileLen(sPath) > 100000 Then
'// 履歴ファイル名をバックアップ名に変更
Name sPath As sPath & Format(Now, "yyyymmdd-hhmmss")
End If
End If
'// 現在日時を取得
sNow = Format(Now, "yyyy/mm/dd hh:mm:ss")
'// ファイル番号取得
n = FreeFile
'// 履歴ファイルを追加書き込みモードで開く
Open sPath For Append As #n
'// ブックのパスを書き込み
Print #n, sNow & " [" & a_sType & "] " & Wb.FullName
'// 履歴ファイルを閉じる
Close #n
End Sub