【実務で使える!】VBAで処理したファイルをログに残す方法|記録・追跡・トラブル防止に役立つ

VBA & Excel

「あれ、このファイル…誰がいつ処理したんだっけ?」

社内でそんな会話が飛び交って、結局みんなでフォルダをぐるぐる探し回る——。

私も以前、処理済みファイルの記録を残していなくて「やっちまった…」となったことがありました。

それ以来、「VBAで処理ログを残す」ことの大切さを実感しています。

ログを自動で残しておけば、あとで振り返ったり、トラブルの元をたどるのもスムーズ。

誰が・いつ・何を処理したかを一覧で確認できる安心感は、思っている以上に大きいです。

今回はそんな「見える化」の力を借りて、実務で役立つファイル処理ログの記録マクロをやさしくご紹介します!

ログ?面倒そう…と思っている方にこそ読んでもらいたい内容です!

  1. はじめに:処理したファイル、ちゃんと記録してますか?
    1. なぜ処理ログが必要なのか?
    2. 「処理履歴がないと困るシーン」は意外と多い
    3. VBAを使って「処理ログを自動記録」しよう!
  2. 【基本の考え方】処理ログってなにを残せばいいの?
    1. 最低限必要な情報(基本のログ構成)
    2. あれば便利な情報(応用ログ)
    3. ログ記録の保存場所は?
  3. 【基本構文】ログを書き込むマクロの仕組み
    1. ログシートを作成し、処理内容を書き込む流れ
    2. 基本のVBAコード:処理履歴を記録するマクロ
    3. このコードのポイント
    4. 応用:ログに「ユーザー名」「処理時間」「エラー内容」も追加する
  4. 【応用テクニック】ユーザー名や処理内容も記録しよう
    1. ① 実行者の「ユーザー名」をログに記録する
    2. ② 処理時間を記録して「パフォーマンス測定」に活用
    3. ③ エラーが発生した場合、原因を記録する
  5. 【実践例】ファイル一括処理×ログ記録マクロの組み合わせ
    1. ① ログを「日付ごとのシート」に分けて整理する
    2. ② 特定のファイル処理ログを検索する機能
  6. 【補足&エラー対策】ログ記録がうまくいかないときのチェックリスト
    1. ① ログを「表形式」に整えて、視認性を向上!
    2. ② 処理件数の推移を「グラフ化」して傾向をチェック!
  7. 【ログ保全術】ログを安全に残す・定期的にバックアップする方法
    1. ① 処理ログの「別ファイル保存(CSV書き出し)」でバックアップ
    2. ② 月ごと・週ごとに「ログを整理・アーカイブ」して軽量化
    3. ③ シートの保護・非表示化で「誤操作や改変」を防ぐ
      1. まとめ:ログは「書くこと」より「残すこと」が大事!
  8. まとめ:処理ログがあるだけで、仕事がこんなにラクになる
    1. ログがあるだけで、ちょっと自信が持てる
    2. 今日から取り入れられる、ささやかな自動化習慣
  9. ログ記録マクロの完全ひな形(処理ファイル情報を記録)

はじめに:処理したファイル、ちゃんと記録してますか?

「あれ、このファイル…誰がいつ処理したんだっけ?」 気がつけば、社内でそんな会話が飛び交い、 みんなでフォルダをぐるぐる探し回る——。

これは決して特別なシーンではなく、実務でよくある“処理履歴迷子”問題です。

私自身も、処理済みのファイルをどこに保存したのか分からなくなったり、 チームメンバーから「これもう処理済みですか?」と聞かれて 「あれ…やったっけ…?」と微妙な沈黙になることがありました。

なぜ処理ログが必要なのか?

業務でVBAを使ってファイルを処理している方なら、 「処理済みのファイル情報を残すべきか?」という疑問を一度は考えたことがあるはずです。

手動でメモしておくのもアリですが、 VBAで処理するときに「何を・いつ・誰が」扱ったかのログを残すことで、

  • あとで確認しやすい(ミス防止&見直しもスムーズ!)
  • トラブル時に原因追跡できる(上書きした?削除した?誰が操作した?)
  • 業務の進捗が可視化できる(データ管理がスッキリ!)

このようなメリットが生まれます。

「処理履歴がないと困るシーン」は意外と多い

たとえば、次のような状況を想像してみてください。

  • 「処理したはずのファイルがない!」
     → 昨日データ整理をしたはずなのに、記録が残っていないため、何をどう処理したのか不明
  • 「これ、もう処理済みでしたっけ…?」
     → 同じファイルを2回処理しようとして、データ重複が発生してしまう
  • 「上書きされてしまったけど、前の状態を知りたい」
     → 何かの変更が入ったあと、前のバージョンがどうだったか振り返る必要がある

こうした場面で「処理ログがあるか・ないか」で、 業務のスムーズさが大きく変わります!

VBAを使って「処理ログを自動記録」しよう!

ファイルの処理状況を手動でメモするのは大変ですが、 VBAを活用すれば「処理したら即ログを残す」ことが可能です。

次の章では、まず処理ログをどういう形式で残せばよいかを解説した後、 実際に VBAで処理履歴を自動記録する基本の仕組み を紹介していきます!

【基本の考え方】処理ログってなにを残せばいいの?

VBAで処理ログを残すとき、まず「どんな情報を記録するべきか?」を考えることが大切です。

記録の仕方によっては、後から確認しやすくなったり、逆に見づらくなってしまうこともあります。

そこで、業務で役立つログ記録の最低限の要素と、 プラスαで便利になる情報を整理してみました。

最低限必要な情報(基本のログ構成)

「このファイル、ちゃんと処理したよ!」 という証拠を残すために、基本的に記録しておくべき項目

項目内容記録方法
処理日・時刻 いつ処理したかNow で日時を取得
ファイル名何のファイルを処理したか処理対象のファイル名を記録
処理結果成功?失敗?成否を「OK/NG」などで残す

こうした基本ログを残すことで、

  • 「やった/やってない」問題を解決!
  • 処理漏れを防ぐ!
  • あとで誰かに聞かれても記録があるから説明しやすい!

あれば便利な情報(応用ログ)

基本情報に加えて、「ログに入れておくとさらに役立つ」項目

項目内容記録方法
実行者(ユーザー名)誰が処理を実行したかEnviron(“Username”) で取得
処理時間どのくらい時間がかかったかTimer で開始~終了時間を測定
保存先パス処理結果の保存場所ActiveWorkbook.Path で取得
エラー内容失敗した場合のエラー原因Err.Description で取得

これらを記録しておくと、

「このファイルの処理をやったのは誰?」

「どこに保存されてる?」

「エラーで止まったけど、何が原因?」

といった疑問をすぐに解決できるようになります!

ログ記録の保存場所は?

ログを残す方法はいくつかあります。状況に応じて使い分けるのがオススメ。

  • パターン①:Excelのログシートに記録する(基本形)
     →Excelファイル内の「ログ専用シート」に追記していく方式
     →見やすく、検索しやすいので「社内業務向けのログ」に向いている
  • パターン②:CSVファイルに記録する
     →Excel外にログを書き出して、別のシステムやツールで活用可能
     →大量のログを扱う場合に便利
  • パターン③:テキストファイルに記録する
     →シンプルなフォーマットで、確認や転送がしやすい
     →ログを別のプログラムと連携する場合に役立つ

ここまでで、「ログにどんな情報を残せばいいか?」のイメージがつかめてきたと思います。

次の章では、VBAでログシートに自動で記録するマクロを組んでいきます!

【基本構文】ログを書き込むマクロの仕組み

前章で「処理ログに何を記録すれば良いか?」を整理しました。

ここからは、VBAを使って実際にログを記録するマクロを作成していきます!

ログシートを作成し、処理内容を書き込む流れ

ログ記録の基本的な流れは以下です。

  • ログ専用シートが存在するか確認する(なければ新規作成)
  • 処理したファイル情報を取得する(ファイル名、日時、処理結果など)
  • ログシートの空き行を取得し、データを書き込む
  • 次の処理に備え、ログを毎回追加していく

基本のVBAコード:処理履歴を記録するマクロ

Sub LogProcess()
    Dim logSheet As Worksheet
    Dim lastRow As Long
    Dim fileName As String
    Dim processDate As String
    
    ' ログシートが存在するかチェック(なければ作成)
    On Error Resume Next
    Set logSheet = ThisWorkbook.Sheets("処理ログ")
    If logSheet Is Nothing Then
        Set logSheet = ThisWorkbook.Sheets.Add
        logSheet.Name = "処理ログ"
        ' ヘッダーを書き込む
        logSheet.Cells(1, 1).Value = "処理日時"
        logSheet.Cells(1, 2).Value = "ファイル名"
        logSheet.Cells(1, 3).Value = "処理結果"
    End If
    On Error GoTo 0

    ' 空き行を取得
    lastRow = logSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1

    ' 処理情報を記録
    processDate = Format(Now, "yyyy/mm/dd HH:MM:SS")
    fileName = "Sample.xlsx" ' ★実際の処理対象ファイル名をここに入れる
    
    logSheet.Cells(lastRow, 1).Value = processDate
    logSheet.Cells(lastRow, 2).Value = fileName
    logSheet.Cells(lastRow, 3).Value = "成功"

    MsgBox "ログ記録が完了しました!"
End Sub

このコードのポイント

  • ログシートがなければ自動で作成
  • 処理日時・ファイル名・成功/失敗を記録
  • ログを追記形式で保存し、履歴が一目で分かる

応用:ログに「ユーザー名」「処理時間」「エラー内容」も追加する

基本形を拡張し、もっと実務向けにするなら以下のようになります。

  • 処理を実行したユーザー名も記録する → Environ(“Username”)
  • 処理の所要時間をログに追加 → Timer で開始・終了時間を記録
  • エラーが起きたら理由も残す → Err.Description を記録する

【応用テクニック】ユーザー名や処理内容も記録しよう

前章で作成した基本の処理ログには、

  • 日時(いつ処理したか)
  • ファイル名(何のデータを扱ったか)
  • 処理結果(成功 or 失敗)

の3つを記録しました。

しかし、もっと 「業務で使いやすい形」 にするために、 以下のような追加情報をログに含める方法を解説します!

① 実行者の「ユーザー名」をログに記録する

「この処理、誰がやったの?」 という疑問を解決するため、 実行者のPCログイン名(Windowsのアカウント名)をログに記録します。

ユーザー名取得のVBAコード

Dim userName As String
userName = Environ("Username") ' Windowsログイン名を取得

これを ログに書き込む ようにすると、 「どの処理を、誰が担当したのか?」を一覧で確認できます。

ログの記録例

2024/06/18 10:45 | Sample.xlsx | 成功 | yamada_taro
2024/06/18 11:05 | Report2024.csv | 成功 | suzuki_kazuko

② 処理時間を記録して「パフォーマンス測定」に活用

「この処理、どのくらい時間がかかった?」 を見える化します。

処理開始~終了の時間を測定するコード

Dim startTime As Double
Dim endTime As Double

startTime = Timer ' 開始時刻
' ここに処理内容を書く
endTime = Timer ' 終了時刻

Dim processTime As Double
processTime = endTime - startTime ' 経過時間(秒)

ログの記録例

2024/06/18 10:45 | Sample.xlsx | 成功 | yamada_taro | 3.2秒
2024/06/18 11:05 | Report2024.csv | 成功 | suzuki_kazuko | 5.8秒

これにより 「処理時間が長いファイル」 を特定できるので、 パフォーマンス改善のヒントにもなります。

③ エラーが発生した場合、原因を記録する

処理ログに 「失敗」の場合、エラーの原因も記録」 することで、 トラブル対応をスムーズにします。

エラー発生時のログ記録

On Error Resume Next
' ここに処理内容を書く
If Err.Number <> 0 Then
    logSheet.Cells(lastRow, 4).Value = "エラー:" & Err.Description
End If
On Error GoTo 0

ログの記録例

2024/06/18 10:45 | Sample.xlsx | 成功 | yamada_taro | 3.2秒
2024/06/18 11:05 | Report2024.csv | 失敗 | suzuki_kazuko | エラー:ファイルが見つかりません

これがあると、「何が原因で失敗したのか?」 がすぐに確認できます!

【実践例】ファイル一括処理×ログ記録マクロの組み合わせ

前章までで、「どんな情報をログに残すか」 を整理し、 基本のログ記録マクロを作成しました。

しかし、ログは蓄積するものなので、 「いざ過去データを振り返りたいときに探せない!」という問題が発生しがちです。

そこで、この章では 「ログの整理・検索しやすくするテクニック」 を解説していきます。

① ログを「日付ごとのシート」に分けて整理する

例えば 1つの「処理ログ」シートに全データを記録するのではなく、 処理した日ごとにシートを分けて管理することで、検索性が向上します。

処理日ごとのログシート作成&データ記録

Sub LogByDate()
    Dim logSheet As Worksheet
    Dim sheetName As String
    Dim lastRow As Long
    Dim processDate As String
    Dim fileName As String
    
    ' 今日の日付を取得(例:20240618)
    sheetName = Format(Date, "yyyymmdd")
    
    ' ログシートの存在をチェックし、なければ作成
    On Error Resume Next
    Set logSheet = ThisWorkbook.Sheets(sheetName)
    If logSheet Is Nothing Then
        Set logSheet = ThisWorkbook.Sheets.Add
        logSheet.Name = sheetName
        ' ヘッダーを設定
        logSheet.Cells(1, 1).Value = "処理日時"
        logSheet.Cells(1, 2).Value = "ファイル名"
        logSheet.Cells(1, 3).Value = "処理結果"
    End If
    On Error GoTo 0
    
    ' 空き行を取得
    lastRow = logSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1

    ' 処理情報を記録
    processDate = Format(Now, "yyyy/mm/dd HH:MM:SS")
    fileName = "Sample.xlsx" ' ★処理対象のファイル名
    
    logSheet.Cells(lastRow, 1).Value = processDate
    logSheet.Cells(lastRow, 2).Value = fileName
    logSheet.Cells(lastRow, 3).Value = "成功"

    MsgBox "ログ記録が完了しました!(" & sheetName & " シートに保存)"
End Sub

この方法のメリット

  • 日付ごとにシートを整理できるため、過去の処理履歴が探しやすい
  • 大きなログデータでも1枚のシートに情報が集まりすぎない
  • 「過去○月の処理記録を見たい」と言われたときにすぐ開ける

② 特定のファイル処理ログを検索する機能

ログが増えてくると 「このファイルの処理履歴を確認したい!」 と思うことがあります。

そんなときに 「ファイル名で検索できる仕組み」 を作っておくと便利です。

検索マクロ:ログシートから「指定ファイルの処理履歴」を探す

Sub SearchLog()
    Dim logSheet As Worksheet
    Dim searchFile As String
    Dim lastRow As Long
    Dim i As Long
    Dim found As Boolean
    
    ' 検索対象のファイル名を入力
    searchFile = InputBox("検索したいファイル名を入力してください", "処理ログ検索")
    
    ' 処理ログシートを指定(この例では「処理ログ」シートを使用)
    Set logSheet = ThisWorkbook.Sheets("処理ログ")
    lastRow = logSheet.Cells(Rows.Count, 1).End(xlUp).Row
    
    ' 検索処理
    found = False
    For i = 2 To lastRow
        If logSheet.Cells(i, 2).Value = searchFile Then
            MsgBox "ファイル:" & searchFile & " の処理履歴:" & vbCrLf & _
                "日時:" & logSheet.Cells(i, 1).Value & vbCrLf & _
                "結果:" & logSheet.Cells(i, 3).Value, _
                vbInformation, "処理履歴検索結果"
            found = True
            Exit For
        End If
    Next i
    
    ' 検索結果がない場合
    If Not found Then MsgBox "検索結果なし:" & searchFile, vbExclamation, "処理履歴検索結果"
End Sub

この方法のメリット

  • 特定のファイルの処理履歴をすぐ検索できる!
  • エラー発生時に「過去の履歴」を確認しやすい
  • VBAを知らない人でも「検索フォーム」感覚で使える

【補足&エラー対策】ログ記録がうまくいかないときのチェックリスト

前章では、日付ごとのログ整理&検索マクロ を作成しました。

この章では、ログデータを 「もっと見やすく整理する方法」「傾向を把握するためのグラフ化」 に焦点を当てます。

① ログを「表形式」に整えて、視認性を向上!

記録されたログデータを、ただ溜めていくだけでは「探しづらい」「見づらい」状態になってしまいます。

そこで、「処理履歴を見やすい表に整えるマクロ」 を作成し、データを整理しましょう。

表形式に整えるコード(罫線・ヘッダー・フォーマット設定)

Sub FormatLogSheet()
    Dim logSheet As Worksheet
    Dim lastRow As Long
    
    ' ログシートを指定
    Set logSheet = ThisWorkbook.Sheets("処理ログ")
    lastRow = logSheet.Cells(Rows.Count, 1).End(xlUp).Row
    
    ' ヘッダーの書式設定
    With logSheet.Rows(1)
        .Font.Bold = True
        .Interior.Color = RGB(200, 200, 255)
    End With
    
    ' 罫線を設定(ログ範囲全体)
    With logSheet.Range("A1:D" & lastRow)
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlEdgeRight).LineStyle = xlContinuous
        .Borders(xlInsideVertical).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
    End With
    
    ' 列幅を調整
    logSheet.Columns("A:D").AutoFit

    MsgBox "ログシートのフォーマットを整えました!"
End Sub

この方法のメリット

  • データが綺麗に整理され、視認性がアップ!
  • ヘッダー・罫線が整っているので、ログ履歴が一目で把握できる
  • 表がきちんと整っていると、他のシステムや報告書にも活用しやすい

② 処理件数の推移を「グラフ化」して傾向をチェック!

「この処理、どのくらいの頻度で行われている?」といった分析をするには、 データをグラフにして可視化するのがオススメです。

グラフを作成するVBAコード

Sub CreateLogChart()
    Dim logSheet As Worksheet
    Dim chartObj As ChartObject
    Dim lastRow As Long
    
    ' ログシートを指定
    Set logSheet = ThisWorkbook.Sheets("処理ログ")
    lastRow = logSheet.Cells(Rows.Count, 1).End(xlUp).Row
    
    ' グラフを挿入
    Set chartObj = logSheet.ChartObjects.Add(Left:=100, Width:=400, Top:=50, Height:=300)
    With chartObj.Chart
        .SetSourceData Source:=logSheet.Range("A2:A" & lastRow) ' 日付データを元にする
        .ChartType = xlLine ' 折れ線グラフを設定
        .HasTitle = True
        .ChartTitle.Text = "処理件数の推移"
    End With

    MsgBox "処理履歴の推移をグラフ化しました!"
End Sub

この方法のメリット

  • 処理の増減や傾向が一目でわかる!
  • 「処理が集中する時期」や「エラーが多いタイミング」も分析できる
  • マクロで自動生成できるため、手作業でグラフを作る手間がなくなる

【ログ保全術】ログを安全に残す・定期的にバックアップする方法

せっかくVBAで処理履歴を記録する仕組みを作っても、

  • 「ログが書き換えられていた」
  • 「シートを誰かが間違って削除した」
  • 「ファイルが壊れて読み込めない」

…なんてことが起きたら、本末転倒です。

この章では、ログを長く安全に残し、あとからでもちゃんと振り返れるようにするための“保全の工夫”をご紹介します。

① 処理ログの「別ファイル保存(CSV書き出し)」でバックアップ

ログシートとは別に、CSV形式などでログを書き出しておくことで、

  • 万が一のファイル破損
  • 社内共有が必要な場面
  • 他システムでの取り込み

にも対応できます!

ログをCSVに保存する基本コード

Sub ExportLogToCSV()
    Dim logSheet As Worksheet
    Dim exportPath As String
    
    Set logSheet = ThisWorkbook.Sheets("処理ログ")
    exportPath = ThisWorkbook.Path & "\log_backup_" & Format(Date, "yyyymmdd") & ".csv"
    
    logSheet.Copy
    With ActiveWorkbook
        .SaveAs Filename:=exportPath, FileFormat:=xlCSV
        .Close SaveChanges:=False
    End With
    
    MsgBox "ログをCSVファイルにバックアップしました!"
End Sub

この方法のメリット

  • ファイルが別に残るのでトラブル時の復旧に強い!
  • CSV形式だから「Excelがなくても開ける」「データベースにも取り込める」
  • 書き換えリスクを抑えて改ざん防止の役割にも◎

② 月ごと・週ごとに「ログを整理・アーカイブ」して軽量化

処理ログは日々蓄積されるので、 ずっと1ファイルに残し続けると重くなっていく問題も出てきます。

そこでおすすめなのが 「月ごとにログを切り出して別ブックに保存する」アーカイブ式

  • 各月が終わるタイミングで、当月分のログを別ブックに保存し、元のシートを初期化
  • log_202406.xlsx, log_202407.xlsx のようにして、年度単位の整理も簡単に!
Sub ExportMonthlyLog()
    Dim logSheet As Worksheet
    Dim exportSheet As Worksheet
    Dim wbExport As Workbook
    Dim exportMonth As String
    Dim lastRow As Long, copyRow As Long
    Dim i As Long
    Dim fileName As String
    Dim exportPath As String
    
    ' ログ元シートを指定(例:「処理ログ」)
    Set logSheet = ThisWorkbook.Sheets("処理ログ")
    
    ' 対象月を入力(形式:yyyy/mm)
    exportMonth = InputBox("抽出したい月を 'yyyy/mm' 形式で入力してください", "月別ログ抽出", Format(Date, "yyyy/mm"))
    If exportMonth = "" Then Exit Sub
    
    ' 新しいブックを作成
    Set wbExport = Workbooks.Add
    Set exportSheet = wbExport.Sheets(1)
    exportSheet.Name = "Log_" & Replace(exportMonth, "/", "")
    
    ' ヘッダーをコピー(1行目)
    logSheet.Rows(1).Copy Destination:=exportSheet.Rows(1)
    copyRow = 2
    
    ' 最終行を取得
    lastRow = logSheet.Cells(logSheet.Rows.Count, 1).End(xlUp).Row
    
    ' 指定された月のデータだけをコピー
    For i = 2 To lastRow
        If Format(logSheet.Cells(i, 1).Value, "yyyy/mm") = exportMonth Then
            logSheet.Rows(i).Copy Destination:=exportSheet.Rows(copyRow)
            copyRow = copyRow + 1
        End If
    Next i

    ' ファイル名と保存
    fileName = "処理ログ_" & Replace(exportMonth, "/", "") & ".xlsx"
    exportPath = ThisWorkbook.Path & "\" & fileName
    wbExport.SaveAs Filename:=exportPath, FileFormat:=xlOpenXMLWorkbook
    wbExport.Close SaveChanges:=False

    MsgBox "ログを [" & exportMonth & "] の分だけ抽出し、保存しました!" & vbCrLf & fileName
End Sub

このマクロでできること

  • 任意の年月(例:2024/06)を指定すると、
  • 処理ログシートから該当する月のデータだけを抽出、
  • 別のExcelファイルとして保存(保存場所:実行中ブックと同じフォルダ)

活用アイデア

  • 月末にまとめて実行してバックアップ → 原本は初期化して軽量化
  • 保存したファイルを チームで共有/Google Driveへ保存など にも応用可能
  • このマクロを 複数月分一括処理用 に改造するのもアリです

③ シートの保護・非表示化で「誤操作や改変」を防ぐ

ログシートは人が操作できる限り、

  • 誤って行を削除する
  • 書式を壊してしまう

などのリスクもあります。

そこで、ログシートには次のような対策を取り入れましょう。

シートの保護

logSheet.Protect Password:="log2024", UserInterfaceOnly:=True

ログシートの非表示化(普通の表示では見えなくする)

logSheet.Visible = xlVeryHidden

ユーザーから見えないところで記録が進むので、 ヒューマンエラーのリスクを大幅に減らせます。

まとめ:ログは「書くこと」より「残すこと」が大事!

  • ログはトラブルが起きたときの“保険証”
  • 書き残すだけでなく、整理し、保管し、活用できる状態であることが大切です
  • VBAなら「記録」「整理」「バックアップ」まで自動化できる!

まとめ:処理ログがあるだけで、仕事がこんなにラクになる

ここまで、VBAを使って処理したファイルのログを記録・整理・活用する方法をじっくり解説してきました。

少し前までの私は、 「処理したっけ?」「エラー出てたっけ?」「どのファイルをいつやった?」と、 とにかく記憶と感覚だけを頼りにExcel作業をしていた気がします。

でも、今回紹介してきた“処理ログの自動記録マクロ”を導入することで──

  • 「やった/やってない」がすぐに分かる
  • ミスを未然に防げる
  • 忘れても大丈夫、って思える安心感

というメリットを、実感できるようになりました。

ログがあるだけで、ちょっと自信が持てる

処理ログって、なんだか面倒に感じるものかもしれません。 でも本当は、「あとで自分を助けてくれる大事な味方」なんです。

  • 上司に「このファイル、処理しました?」と聞かれたとき
  • チームで誰が何をやったか確認したいとき
  • ファイルが壊れてしまったり、記憶があいまいになったとき

そんな“いざ”というときに、淡々と事実を残してくれている処理ログの存在が、どれだけ頼れるか。

これは、「過去の自分、偉い!!」って褒めてあげたくなる機能です。

今日から取り入れられる、ささやかな自動化習慣

VBAを使えば、ログを記録するのも、日付ごとに整理するのも、グラフで可視化するのも、ボタン一つでできるようになります。

そしてその先には、 「毎日、ちょっとラクになる未来」 「定時で帰って、ゲームやドラマを楽しめる夜」 が待っています!

ログ記録マクロの完全ひな形(処理ファイル情報を記録)

Sub RecordProcessLog()
    Dim logSheet As Worksheet
    Dim lastRow As Long
    Dim fileName As String
    Dim processResult As String
    Dim userName As String
    Dim processTime As String
    Dim errorMsg As String
    
    ' 実行者・処理時間など初期データ取得
    userName = Environ("Username")
    processTime = Format(Now, "yyyy/mm/dd HH:MM:SS")
    fileName = "Sample.xlsx" ' ←実際の処理対象に置き換えてください
    processResult = "成功"     ' または "失敗"
    errorMsg = ""              ' エラー時はエラーメッセージを代入
    
    ' ログシートの取得または作成
    On Error Resume Next
    Set logSheet = ThisWorkbook.Sheets("処理ログ")
    If logSheet Is Nothing Then
        Set logSheet = ThisWorkbook.Sheets.Add
        logSheet.Name = "処理ログ"
        With logSheet
            .Range("A1:F1").Value = Array("日時", "ファイル名", "結果", "実行者", "保存先", "エラーメッセージ")
        End With
    End If
    On Error GoTo 0

    ' 最終行取得+追記
    With logSheet
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        .Cells(lastRow, 1).Value = processTime
        .Cells(lastRow, 2).Value = fileName
        .Cells(lastRow, 3).Value = processResult
        .Cells(lastRow, 4).Value = userName
        .Cells(lastRow, 5).Value = ThisWorkbook.Path
        .Cells(lastRow, 6).Value = errorMsg
    End With

    MsgBox "処理ログを記録しました!", vbInformation
End Sub

このひな形の特徴

  • ログシートがなければ自動生成
  • 日時/ファイル名/成功可否/ユーザー名/保存先/エラー情報 を記録
  • 他の処理マクロと組み合わせて使いやすい汎用構成
  • 書き換えではなく追記型のログ形式
decopon
decopon

処理ログなんて、最初はちょっと地味で手間に思えるかもしれません。 でもそれは、“あとで困らない自分”をそっと守ってくれる存在です。

あなたの「記録しておこうかな」というその気持ちが、 きっと未来のあなたを助けてくれます。 ミスを減らすために。 誰かに頼られる安心のために。 そして、趣味や自分の時間をちゃんと楽しむために。

コメント

タイトルとURLをコピーしました