Microsoft ExcelでVBAを使用して、ログファイル
コンピュータでは、ログファイルは、オペレーティングシステムまたは他のソフトウェアの実行で発生するイベント、または通信ソフトウェアの異なるユーザー間のメッセージのいずれかを記録するファイルです。ロギングは、ログを保持する行為です。最も単純なケースでは、メッセージは単一のログファイルに書き込まれます。
シナリオを考えてみましょう。アプリケーションは、アプリケーションにアクセスしているユーザーの詳細をログファイルに記録しています。
Logファイルは、さまざまな状況で、特に開発者にとって役立ちます。ログファイルは、一時的またはより永続的な情報を保存できるプレーンテキストファイルです。ログファイルを作成するのに多くのコードは必要ありません。この記事では、特定のフォルダーに自動ログファイルを作成することに焦点を当てます。
===
質問:ファイルが開かれるたびに、現在の日付、時刻、およびユーザー名を含むメモ帳ファイルを作成するにはどうすればよいですか?
以下は、財務情報を含むExcelワークブックのスナップショットです。
この例では、結果はテキストファイルの形式になります。メモ帳には、日付、時刻、その他の詳細が含まれます。ややこのように:
ログファイルを作成するには、以下の手順に従ってVBエディターを起動する必要があります。[開発者]タブをクリックします。[コード]グループから[VisualBasic]を選択します
-
[挿入]をクリックしてから[モジュール]をクリックします
これにより、新しいモジュールが作成されます。モジュールに次のコードを入力します
Sub LogInformation(LogMessage As String) Const LogFileName As String = "D:\FOLDERNAME\TEXTFILE.LOG" Dim FileNum As Integer FileNum = FreeFile ' next file number Open LogFileName For Append As #FileNum ' creates the file if it doesn't exist Print #FileNum, LogMessage ' write information at the end of the text file Close #FileNum ' close the file End Sub
Public Sub DisplayLastLogInformation() Const LogFileName As String = "D:\FOLDERNAME\TEXTFILE.LOG" Dim FileNum As Integer, tLine As String FileNum = FreeFile ' next file number Open LogFileName For Input Access Read Shared As #f ' open the file for reading Do While Not EOF(FileNum) Line Input #FileNum, tLine ' read a line from the text file Loop ' until the last line is read Close #FileNum ' close the file MsgBox tLine, vbInformation, "Last log information:" End Sub
Sub DeleteLogFile(FullFileName As String) On Error Resume Next ' ignore possible errors Kill FullFileName ' delete the file if it exists and it is possible On Error GoTo 0 ' break on errors End Sub
ThisWorkbookモジュールで次のコードをコピーします
Private Sub Workbook_Open() LogInformation ThisWorkbook.Name & " opened by " & _ Application.UserName & " " & Format(Now, "yyyy-mm-dd hh:mm") End Sub
-
これで、VBAコードの準備がすべて整いました。次回Excelブックを開くと、日付と時刻がメモ帳に保存されます。下の画像を参照してください:
マクロはデータを上書きしません。
結論:マクロは、ブックが指定されたパスとフォルダーで開かれるたびに実行されます。
私たちのブログが気に入ったら、Facebookで友達と共有してください。また、TwitterやFacebookでフォローすることもできます。
_私たちはあなたからの連絡をお待ちしております。私たちの仕事を改善、補完、または革新し、あなたのためにそれをより良くする方法を教えてください。 [email protected]_までご連絡ください