【Excelマクロ】ログをテキストに書き込んでみよう

ログを書き出すってどういうこと?

マクロで何か問題が起きたとき、「何が起きたのか」を後から確認したいことがあります。

たとえば、

  • エラーの内容を記録しておきたい
  • 誰がいつマクロを使ったかを残したい
  • 実行内容を自動で保存しておきたい

そのようなときに使えるのが、「ファイル出力(ログ出力)」です。

VBAでは、テキストファイルにメッセージを書き込むことができ、自分用の記録エラー分析に役立ちます。

ただ、テキストに書き込む方法は少し複雑に見えるので、初めのうちはとっつきにくいかもしれません。

実装するメリット

  • 実行結果を記録として残せる
  • エラーが発生した原因を後で確認できる
  • 利用者の操作履歴を見える化できる
  • 開発者やチームメンバーと情報を共有しやすくなる

最もシンプルなファイル出力の例

まずは、「C:\log.txt」というファイルに、簡単な1行メッセージを書き込む処理を紹介します。

Sub WriteLog()

    Dim msg As String

    Open "C:\log.txt" For Append As #1
        Print #1, msg
    Close #1

    msg = "ログを書き込みました:" & Now

End Sub

解説

  • Open "C:\log.txt" For Append As #1 で、ログファイルを追記モードで開きます。
  • Print #1, msg で1行書き込みます。
  • 最後に Close #1 でファイルを閉じます。← これを忘れると不具合のもとになるので重要です。
  • msg に記録したい文字列(日付入り)を代入します。

各構文の意味(詳細)

Open "C:\log.txt" For Append As #1

  • Open:ファイルを開く命令です。
  • "C:\log.txt":保存するファイルの場所(Windowsのパス)
  • For Append:追記モード(既存の内容を残したまま末尾に追加)
  • As #1:このファイルを「1番」として操作します。番号は必須。

Print #1, msg

  • ファイル番号1番(= #1)に、変数msgの中身を書き込む
  • 1行ずつ追記されます(改行付き)

Close #1

  • 開いたファイルは必ず閉じます。これを忘れるとExcelやファイルがフリーズすることがあります。

よくあるエラーと注意点

  • ファイルが開けない
    • ファイルのパスが間違っている(全角文字やスペースに注意)
    • ネットワークドライブやOneDrive上で失敗する場合あり
  • ログが上書きされると思っていたら追記される
    • Appendは追記。最初から書きたい場合はFor Outputを使います(ただし全部消えるので注意)
  • 日本語が文字化けする?
    • Printは通常文字化けしませんが、必要なら Write と使い分けも可能
項目PrintWrite
区切り文字半角スペースカンマ区切り(CSV形式っぽくなる)
文字列の囲い方囲まない(そのまま)自動で ""(ダブルクォーテーション)で囲む
改行の扱い自動で1行ずつ改行同様(最後に改行される)
データ形式の違い書式はそのまま文字列は”、日付は # で囲われる
読みやすさ人間にとって読みやすいプログラムで読み取るのに便利
実務での使い分けログや人が読むメモ書きに向いているCSV出力やデータ加工向き

応用:エラー処理と組み合わせる

ファイル出力は、エラー処理と組み合わせることで真価を発揮します。

例:エラー発生時にログ出力する

Sub SampleWithErrorLog()

    On Error GoTo ErrorHandler

    ' 存在しないシートにアクセス(エラー発生)
    Sheets("売上").Range("A1").Value = "テスト"

    MsgBox "処理が完了しました。"
    Exit Sub

ErrorHandler:
    Dim msg As String
    msg = "エラー発生:" & Now & " - " & Err.Number & " - " & Err.Description

    Open "C:\log.txt" For Append As #1
        Print #1, msg
    Close #1

    MsgBox "エラーが発生しました。ログに記録しました。"

End Sub

解説

  • Err.Description でエラーの中身を取得
  • Now で日付と時刻を記録
  • テキストファイルに記録して、あとで確認できるようにする

まとめ

ファイル出力は「一見むずかしそう」に見えるかもしれませんが、基本的な使い方を押さえればとても便利です。

  • Open ~ For Append As #1 で追記モードで開く
  • Print #1, ~ で1行ずつ書き出す
  • Close #1 で忘れずに閉じる

この3ステップを覚えるだけで、マクロの信頼性・保守性がぐんと高まります

まずは1行だけ「ログを書いてみる」ことから、始めてみましょう!

コメント