假设一个工作簿存在于共享网络驱动器上,并且被用户A打开。如果用户B试图通过双击打开该文件,他将得到类似以下提示的信息:
如果用户B改为尝试使用以下方式以编程方式(可能是使用外接程序)打开工作簿:
Workbooks.Open("N:\path_to_workbook\workbook.xlsx")
究竟会发生什么?是否出现以上提示?如果是这样,可以用抑制Application.DisplayAlerts = False
吗?如果Workbooks.Open
在这种情况下,如上所示抛出异常,我们是否需要使用ReadOnly参数再次尝试,如下所示:
Workbooks.Open("N:\path_to_workbook\workbook.xlsx", ReadOnly:=True)
我读过其他文章(包括本文章),它们表明Workbooks.Open
在第一个代码段中成功完成并且以只读方式打开了工作簿,尽管这不是很清楚。
不幸的是,我没有配置测试环境来自己复制这种情况,否则,这显然是答案。
我在我们的网络驱动器环境上进行了测试,发现了以下内容。如果用户A打开了文件,而用户B尝试使用编程方式打开文件,Workbooks.Open
则结果将是文件的只读版本。
如果您希望控制只读文件的打开,则可以利用以下代码示例将其关闭:
Sub Test()
Dim wb As Workbook
Set wb = Workbooks.Open("Path_To_Excel_File")
If wb.ReadOnly Then
MsgBox "File already in use"
wb.Close savechanges:=False
End If
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句