vba:エラー処理

  • クラス: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