VBA用户表单事件活动的LOG文件

时间:2017-09-08 09:13:04

标签: excel vba excel-vba logging

我正在尝试获取MI LOG,以了解我为我的团队创建的userform的可用性。

我目前处于这样一个阶段:我只能保存工作簿何时打开以及由谁执行的跟踪日志。但我想更进一步,并记录在用户表单上执行的活动,例如用户正在搜索的内容以及它所取出的结果。

请参阅下面我现有的代码:下面的代码放在我的模块中:

Sub LogInformation(LogMessage As String)

    Const LogFileName As String = "C:\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 = "C:\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

我从下面的TXT文件中获得的结果:

> Number Checker.xlsm opened by #username :  2017-08-30 09:12
> Number Checker.xlsm opened by #username :  2017-09-02 09:19
> Number Checker.xlsm opened by #username :  2017-09-07 09:21

userform本身是一个简单的搜索工具,并根据搜索结果返回结果,这是我需要帮助来跟踪用户搜索的内容以及txtbox1反馈的结果。这可能还是我在死路上奔跑? :(

非常感谢任何帮助。谢谢

2 个答案:

答案 0 :(得分:0)

我只想说谢谢大家的意见和建议。帮助我指出正确的方向,我想我已经设法解决了它,我需要做的就是将这些代码放在click event下:

LogInformation ThisWorkbook.Name & " - " & " Closed by - " & _
Environ("username") & " - " & Application.username & " - " & Format(Now, "yyyy-mm-dd hh:mm") & " - " & " Number Searched For - " & _
    Me.check_number.Value & " - " & Me.number_status.Value

[问题解决]现在接下来的任务:p

答案 1 :(得分:0)

我创建了一个简单的实用程序来帮助我。它被称为VBA遥测。

它连接VBA和Microsoft Azure Cloud,用于实时记录和跟踪事件&带有1行VBA代码的VBA错误。

因此,您可以在世界任何地方记录和跟踪您的VBA项目(Excel工作簿,Access项目)。您可以看到Azure门户应用程序洞察资源中发生了什么(这是Microsoft Azure的新产品)。

例如,如果要跟踪事件,可以使用此功能执行此操作:

TrackEvent "CommandButton1ClickEvent" 

还有一个功能TrackMetric,我们也可以发送一些自定义数据。例如,我们可以发送,在用户计算机上完成循环需要多长时间。

TrackMetric "Loop1Duration", 100

或者,如果您想跟踪错误(或异常),这里有一个示例代码行:

TrackError Err.Description, Err.Number, "CommandButton1_Click"

您需要Microsoft Azure云上的免费帐户以及此实用程序的免费版本。

这是一段视频(45秒),我正在展示如何记录(跟踪)事件:

Link to 45 sec video Track Events

您可以在本文中看到有关如何执行此操作的详细信息,本文中还有一个YouTube视频(详细的在线讲座): Link to the article

P.S。

正如我在开始时所说的那样,这有助于我在VBA项目(Excel,Access)中进行日志记录和错误跟踪的项目,这就是为什么我也让其他人可以使用它。如果您不介意不时弹出一个msgbox,您可以使用免费版本,如果不是一次性支付几美元将帮助我进一步开发这个小实用程序。

希望这有帮助, 达沃尔