我正在使用Filedialog来选择文件,但我需要知道该文件是否已打开。 我尝试过使用GetAttr,但我总是得到代码32(自上次备份后文件已被更改) 我也尝试过使用MSDN中的IsFileOpen(https://support.microsoft.com/en-us/help/291295/macro-code-to-check-whether-a-file-is-already-open),但是当我的同事打开文件时,这个方法总是返回我自己的用户。当文件关闭时,IsFileOpen按预期工作,因为我已经在我的同事关闭文件时对此进行了测试。
我应该如何继续执行IsFileOpen以返回我的同事的用户名而不是我自己的用户名?
更新3并回复里卡多罗德里格斯: 从MSDN上的文章来看,提出的解决方案并不能归还我需要的东西,我担心...... (" UserStatus属性不会返回有关以只读方式打开指定工作簿的用户的信息。") MSDN
更新2并回复Tim Williams和Ricardo Rodrigues: 我现在通过使用GetFileOwner程序看到我的错误...当然它提供了我自己的用户名,因为它实际上是我创建了文件...
里卡多:我将测试你的程序并恢复原状
更新并回复Tim Williams:
Function GetFileOwner(fileDir As String, fileName As String) As String
'On Error Resume Next
Dim secUtil As Object
Dim secDesc As Object
Set secUtil = CreateObject("ADsSecurityUtility")
Set secDesc = secUtil.GetSecurityDescriptor(fileDir & fileName, 1, 1)
GetFileOwner = secDesc.Owner
结束功能