我正在寻找一些代码来告诉我打开了Excel(.xls)文件的用户的用户名。当前,如果文件以只读方式打开,则代码将抛出msgbox,但我也希望它告诉我打开它的人。手动打开时,它会给出名称,作为“锁定编辑”错误消息。这是可能添加的功能吗?
我研究了许多网站,但没有找到一个合适的网站,或者根本没有答案。
我还研究了读取已创建的锁定文件,但仍然无法使其正常工作。
xlApp = New Microsoft.Office.Interop.Excel.ApplicationClass
xlWorkBook = xlApp.Workbooks.Open("\\********", IO.FileAccess.Write)
If xlWorkBook.ReadOnly = True Then
xlWorkBook.Close(SaveChanges:=False)
xlApp.Quit()
releaseObject(xlApp)
releaseObject(xlWorkBook)
MsgBox("Workbook Open")
Else
xlApp.Visible = True
End If
msgbox在哪里,我希望它显示打开它的用户名。
答案 0 :(得分:1)
Excel在与文件相同的目录中创建一个隐藏文件,文件名以“〜$”开头。该文件的所有者应该是打开Excel文档的帐户(由贡献者Philip Hanebeck在Find out who has Excel file locked for editing中指出)。
将两者放在一起:
Dim excelFile = "C:\temp\mydoc.xlsx"
Dim lockFile = Path.Combine(Path.GetDirectoryName(excelFile), "~$" & Path.GetFileName(excelFile))
Dim fileOwner = File.GetAccessControl(lockFile).GetOwner(GetType(Security.Principal.NTAccount)).ToString()
MsgBox(fileOwner)
我只能在我的计算机上进行测试:您将需要更严格地检查它并进行错误处理。
注意:在我之前链接的文章中,它提到此方法可能不适用于.xls文件,但没有说明是否正在使用早期版本的Excel。而且在文件路径以“ \\”开头而不是在映射驱动器上的地方可能不起作用。