乔问是否有一种方法可以在宏中确定谁打开了特定的工作簿。他考虑过使用WriteReservedBy属性,但似乎没有他需要的信息。

不幸的是,无法从VBA确定此信息-只是无法访问。 WriteReservedBy属性不会显示谁打开了文件。它显示了谁使用密码保存了工作簿。换句话说,当某人保存工作簿并可以选择使用密码进行修改时,该文件为“ WriteReserved”。 WriteReservedBy属性包含以WriteReserved状态保存文件的人员的姓名。

如果您只需要知道答案(关于谁打开了文件)

定期收集最简单的打开文件名列表,然后让网络管理员告诉您打开文件的人是最容易的-这些信息保存在网络上,管理员可以访问。

另一个可能的解决方案是向每个工作簿添加一个AutoOpen宏,该宏将一个临时文件写入磁盘,其中包含打开文件的人的名字。宏不仅需要打开临时文件,还需要处理错误情况,例如已经打开的临时文件。然后,其他宏可以访问该临时文件以查看其包含的名称。

在以下站点找到的宏可以提供另一种解决方案,以找出谁打开了特定的工作簿:

https://bizintelsolutions.wordpress.com/2015/01/26/who-is-in-excel-xlsx-file/

VBNet网站可能是答案的另一个地方。此页面上的文章包含可能适用于所需信息的代码:

http://vbnet.mvps.org/index.html?code/network/netfileenum.htm

请注意,该代码仅在旧版Windows中有效。在Windows 7之前的版本中,它应该可以正常工作,但在以后的版本中,它应该轻而易举地运行-您需要对其进行全面测试,以确保它在您的环境中可以正常工作。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(9511)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: