初心者必見!Access VBAを使ったログ出力の手順とサンプルコード - 中小企業のITサポート

初心者必見!Access VBAを使ったログ出力の手順とサンプルコード

はじめに

Accessの保守対応をしていると、ログ出力が実装されておらず、原因を特定するのが難しい場合があります。システム開発の現場では、コードを修正する時間よりも原因を特定する時間の方が長くなることがあります。原因を特定しなければ修正もできないため、ログ出力は必須の機能です。Accessでは、VBAを使ってアプリケーションの動作状況やエラーを記録し、後から調査しやすくすることが可能です。本記事では、初心者でも実装できるように、ログ出力の目的やメリット、基本的なコードの記述方法について解説します。

1. Access VBAでログ出力する目的とメリット

1.1 ログ出力の役割と用途

ログ出力は、プログラムの動作やユーザーアクション(どのような操作が行われたか)を記録し、エラーの原因調査や改善点の発見に役立ちます。また、処理の進捗状況の確認にも使えます。エラー発生時、ユーザーにヒアリングしてもエラー内容やエラーメッセージを詳細に覚えていることは少ないため、ログに記録する方が確実です。また、バッチ等で処理時間が長くなる場合には、各処理の開始と終了時にログを出力することで進捗状況を把握できるようになり、アプリの停止判断がしやすくなります。(進んでいるのかいないのか分からないと不安になりますよね)

1.2 エラーログとアクションログの違い

エラーログはエラー発生時の情報を記録し、エラー発生のタイミングや原因特定に役立ちます。一方、アクションログはユーザーの操作やシステムの動作を記録し、利用状況の参考にします。Accessの起動時と終了時、各機能の開始時と終了時のタイミングでログを出力し、エラー発生時にエラー番号とエラーメッセージを記録するだけで、原因調査が格段にしやすくなります。

2. Access VBAでのログ出力の基本手順

2.1 ログファイルの作成方法

まず、サンプルコードをご覧ください。コードの説明は後述します。

Dim logFilePath As String
logFilePath = "C:\Logs\log.txt"
Open logFilePath For Append As #1
Print #1, "ログをここに出力します"
Close #1
2.2 基本的なログ出力コードの記述

Access VBAでログを出力するには、ログファイルを開き、メッセージを追記し、最後にファイルを閉じるというステップが必要です。基本的な流れとコードについて説明します。

2.2.1. ログファイルを指定する

まず、ログを保存するファイルのパスを指定します。ファイルが存在しなくても自動的に作成されます。例として、以下のように「C:\Logs\log.txt」を指定します。

Dim logFilePath As String
logFilePath = "C:\Logs\log.txt"
2.2.2. ファイルを開く

次に、ログファイルを「追記モード(Append)」で開きます。これにより、既存の内容が上書きされることなく、末尾に追加されます。

Open logFilePath For Append As #1

上記コードでは、#1 というファイル番号を指定しており、開いたファイルに対して番号を使って書き込みができる仕組みです。

2.2.3. ログ内容を書き込む

ファイルを開いたら、VBAPrintを使って#1で開いたファイルにメッセージを出力します。

Print #1, "ログをここに出力します"

メッセージの内容は、状況に応じて変更してください。

2.2.4. ファイルを閉じる

最後にファイルを閉じ、リソースを解放します。これを行わないと、ファイルが開いたままになり、他のプログラムがアクセスできなくなる可能性があります。

Close #1
2.2.5. 注意点

ログファイルの保存先フォルダ(Logs)が存在することを確認してください。フォルダが存在しない場合、エラーが発生するため、フォルダの有無を確認する処理を追加するのが良いです。

3. ログ出力のカスタマイズ方法

3.1 ログ出力のフォーマットを整える

ログ内容を見やすくするため、日時やメッセージのレベル(INFO, ERRORなど)を加えることが一般的です。

Print #1, "[" & Now & "] [INFO] 処理が完了しました"
3.2 時間やユーザー情報を含めた詳細なログを作成する

ユーザー名や操作内容を追加することで、誰がどの操作を行ったか追跡しやすくなります。

3.3 ログの管理と古いログの削除を考慮する

ログが蓄積するとファイルサイズが大きくなるため、一定のファイルサイズや日付で分けると管理しやすくなります。 また、古いログを自動的に削除しておくと更に管理がしやすいです。いわゆるログローテーションの考慮ですね。

まとめ

Access VBAでのログ出力は、プログラムの動作確認やトラブル時の原因調査に有効です。基本的な出力方法をマスターし、必要に応じてカスタマイズすることで、システムを効率よく管理できるようになります。

他にも、Accessについて記事を書いています

reisaikigyo.hatenablog.com

reisaikigyo.hatenablog.com

reisaikigyo.hatenablog.com