- クラス:LogUtilで実装
- エラーまでをがっつり実装するメリットがあまりない気がする。
Option Explicit
'-----------------------------------------------------
' エラーログをファイルに出力する
' 出力先は、実行ファイルと同様のフォルダ、出力先のフォルダが無い場合は、生成する。
' 出力ファイ名:yyyymmdd_error.log ※日付は、出力当日
'
' 引数:エラーオブジェクト
'
'-----------------------------------------------------
Public Sub OutputErrorLog(ByVal err As ErrObject)
Dim comUtil As CommonUtil
Set comUtil = New CommonUtil
' ファイル名から拡張子を削除→フォルダ名
Dim logFolderName As String: logFolderName = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 5)
' 実行当日からファイル用の日付を抽出し、ファイル名を生成
Dim logFileName As String: logFileName = comUtil.ConvertDateToString(Now, 1) & "_error.log"
Dim folderPath As String: folderPath = ThisWorkbook.Path & "\" & logFolderName
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
' フォルダが無い場合、生成
If Dir(folderPath, vbDirectory) = "" Then fso.CreateFolder (folderPath)
Dim strPath As String: strPath = ThisWorkbook.Path & "\" & logFolderName & "\" & logFileName
Dim logMsg As String: logMsg = Now & vbTab & "NO:" & err.Number & vbTab & "DESC:" & err.Description
' エラー内容を出力
With fso
If Not .FileExists(strPath) Then
.CreateTextFile (strPath)
End If
With .OpenTextFile(strPath, 8)
.WriteLine logMsg
.Close
End With
End With
Set fso = Nothing
End Sub