マクロの動作をログファイルに記録する


マクロ内の動作をログファイルに記録します。ログファイルはC:\Work\Report.logとし、存在しない場合は作成します。ログには日時と任意の文字列を書き込みます。日時と文字列の間はタブを挿入します。ログの書き込みは複数の箇所で行われるので、外部プロシージャとしました。

Sub Sample06()
    Workbooks.Add
    Call WriteLog("新しいブックを開きました")
    Range("A1") = 123
    Call WriteLog("セルにデータを書き込みました")
    ActiveWorkbook.SaveAs "C:\Work\Report.xlsxx"
    Call WriteLog("ブックを保存しました")
End Sub

Sub WriteLog(msg As String)
    Dim FSO As Object, LOG As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''ログファイルがなければ作ります
    If FSO.FileExists("C:\Work\Report.log") = False Then
        FSO.CreateTextFile "C:\Work\Report.log"
    End If
    ''追記で開きます
    Set LOG = FSO.OpenTextFile("C:\Work\Report.log", 8)
    ''日時+タブ+メッセージを書き込みます
    LOG.WriteLine Now & vbTab & msg
    Set LOG = Nothing
    Set FSO = Nothing
End Sub