Excel VBA自动化/监控/开发

Excel VBA自动化/监控/开发,excel,automation,monitoring,analysis,vba,Excel,Automation,Monitoring,Analysis,Vba,我在我的部门担任EUCs协调员(50多人和150多个MS Excel宏用于控制和报告)。为了更好地跟踪宏的使用情况和度量工具性能,我在每个工作簿中添加了一个简单的代码来收集使用情况数据(谁和何时打开/关闭了工作簿,宏执行某些任务需要多少时间等等)。代码非常简单,它收集公共变量中的所有数据,在工作簿关闭之前,它将变量的内容保存到文件夹中的.txt文件中 Option Explicit Dim info_data as String Sub check_point(x as integer) S

我在我的部门担任EUCs协调员(50多人和150多个MS Excel宏用于控制和报告)。为了更好地跟踪宏的使用情况和度量工具性能,我在每个工作簿中添加了一个简单的代码来收集使用情况数据(谁和何时打开/关闭了工作簿,宏执行某些任务需要多少时间等等)。代码非常简单,它收集公共变量中的所有数据,在工作簿关闭之前,它将变量的内容保存到文件夹中的.txt文件中

Option Explicit

Dim info_data as String

Sub check_point(x as integer)
Select x
 Case 0
 Call WBK_close
 Case 1
 Call WBK_open
 Case 2
 Call WBK_main_start
 Case 3
 Call WBK_main_end
End Select
End Sub

Private Sub WBK_close()
 info_data = info_data & "WBK Close;" & Now()
 Open myFile For Output As #1
 Print #1, info_data
 Close #1
End Sub

Private Sub WBK_open()
 info_data = "WBK Open;" & Now() & vbNewLine
End Sub

Private Sub WBK_main_start()
 info_data = "WBK Main Start;" & Now() & vbNewLine
End Sub

Private Sub WBK_main_end()
 info_data = "WBK Main End;" & Now() & vbNewLine
End Sub
我在代码中的某个点使用check_point sub进行记录

有时会发生一些错误,特别是当其他宏也将某些内容写入文本文件时。或者,当使用
End
语句退出纯写代码时,删除保存到
info\u data
的所有数据。
因此,我想知道是否有更聪明的方法来收集MS Excel使用数据(其他代码、外接程序、使用另一种编程语言、数据存储的替代方法(而不是txt))。

问题在于,他们一次打开多个工作簿,每个工作簿都运行一个宏?每个宏都试图写入文本文件?如果是这种情况,则写入数据库(位于Access DB的网络的SQL Server)?DB消除了多个并发用户的问题,也意味着您的所有数据都已经在一个地方(而不是定期从他们的计算机收集文本文件)


如果您向数据库写入数据,它们当然需要位于您的域中。也许这并不总是可能的。但也许在那些他们不在域名上的情况下,丢失跟踪是可以接受的。或者,您可以在这些情况下写入专用文本文件,然后在恢复域连接后,将所需的任何信息写入数据库。

问题在于,他们一次打开多个工作簿,每个工作簿都运行一个宏?每个宏都试图写入文本文件?如果是这种情况,则写入数据库(位于Access DB的网络的SQL Server)?DB消除了多个并发用户的问题,也意味着您的所有数据都已经在一个地方(而不是定期从他们的计算机收集文本文件)


如果您向数据库写入数据,它们当然需要位于您的域中。也许这并不总是可能的。但也许在那些他们不在域名上的情况下,丢失跟踪是可以接受的。或者,您可以在这些情况下写入专用文本文件,然后在恢复域连接后,将您需要的任何信息写入数据库。

您可以使用Azure Application Insights实时在线跟踪VBA项目(Excel和Access)的使用情况、性能和错误跟踪。 它使用一种叫做VBA遥测的小工具。

如果您没有Microsoft Azure帐户,您可以创建并使用免费帐户。
几天前,我在我的课程中创建了一个关于如何做到这一切的UDE
这是一个快速、短期的课程(30分钟),在最初的24小时内,有2400多名学员报名。 您可以观看本课程的预览,看看是否适合您。

本课程的链接:


希望这有帮助,

Davor

您可以使用Azure Application Insights实时在线跟踪VBA项目(Excel和Access)的使用情况、性能和错误跟踪。 它使用一种叫做VBA遥测的小工具。

如果您没有Microsoft Azure帐户,您可以创建并使用免费帐户。
几天前,我在我的课程中创建了一个关于如何做到这一切的UDE
这是一个快速、短期的课程(30分钟),在最初的24小时内,有2400多名学员报名。 您可以观看本课程的预览,看看是否适合您。

本课程的链接:


希望这有帮助,

Davor

不确定这是否有帮助,但也许您可以尝试通过事件
Workbook\u Open
Workbook\u Close
?,触发代码?。这样可以确保不会与其他Sub发生冲突,但问题是,有时宏已完成,但如果工作簿仍处于打开状态,则无法捕获实际结束时间。@FoxfireAndBurnsAndBurns感谢您的建议。这正是我正在做的:)。通过在主子程序开始和结束时使用检查点,可以成功地收集有关宏的数据。问题更多地涉及效率和故障排除。如果有人有类似的经验,我也很乐意看到任何其他解决方案:)不确定这是否有帮助,但也许您可以尝试使用事件
Workbook\u Open
Workbook\u Close
?,触发代码?。这样可以确保不会与其他Sub发生冲突,但问题是,有时宏已完成,但如果工作簿仍处于打开状态,则无法捕获实际结束时间。@FoxfireAndBurnsAndBurns感谢您的建议。这正是我正在做的:)。通过在主子程序开始和结束时使用检查点,可以成功地收集有关宏的数据。问题更多地涉及效率和故障排除。如果有人有类似的经验,我也很乐意看到其他解决方案:)我们正在开发共享驱动器,因此从我的角度来看,文本文件的收集没有问题。关于数据库,它会对性能产生影响吗(据我所知,存储记录比存储在数千个单独的文件中更好)?我的意思是写文本文件和数据库有什么区别。有关于这个或更多描述的教程吗?我会非常高兴的thankful@Lincoln如果目标是聚合用户数据,那么数千个文本文件有何帮助?如果您在网络上向数据库写入数据,我认为速度也会一样快,您只需要管理一个文件/表。处理所有这些文件听起来像是一场噩梦。谢谢你的评论,我是科伦