打开另一个用户打开的共享驱动器上的工作簿(或其他Office文档)

假设共享networking驱动器上存在工作簿,并由用户A打开。如果用户B尝试通过双击打开该文件,则会得到类似于以下提示的内容:

在这里输入图像说明

如果用户B尝试以编程方式打开工作簿(也许使用加载项),请执行以下操作:

Workbooks.Open("N:\path_to_workbook\workbook.xlsx") 

究竟发生了什么? 这个提示是否出现? 如果是这样,可以用Application.DisplayAlerts = False来抑制吗? 如果上面的Workbooks.Open在这种情况下抛出exception,那么我们是否需要使用ReadOnly参数再次尝试:

 Workbooks.Open("N:\path_to_workbook\workbook.xlsx", ReadOnly:=True) 

我已阅读其他post(包括这一个 ),build议Workbooks.Open在第一个代码段成功,工作簿打开只读,虽然这不是很清楚。

不幸的是,我没有一个configuration好的testing环境来自己复制这个场景,否则这个答案会很明显。

我在我们的networking驱动器环境上testing过,发现如下。 如果文件被用户A打开,并且用户B尝试使用Workbooks.Open以编程方式打开文件,打开,那么结果将是该文件的只读版本。

如果您希望控制只读文件的打开,则可以使用以下代码示例closures它:

 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