假设工作簿存在于共享网络驱动器上,并由用户A打开。如果用户B尝试通过双击打开此文件,则会出现类似以下提示:
如果用户B尝试使用以下方式以编程方式(可能使用加载项)打开工作簿,则
<section id="sidebar">
<form onSubmit="return false">
<label for="Name">Name:</label>
<input id="nameInput" type="text" placeholder="Your name here..." name="name" />
<input type="submit" value="Add to list" name="Add" onClick="addToArray();">
<br>
<label for="Default">List over employees:</label>
<select id="employeeSelect">
</select>
</form>
</section>
究竟会发生什么?上面的提示会出现吗?如果是,可以使用Workbooks.Open("N:\path_to_workbook\workbook.xlsx")
来抑制吗?如果上面显示的Application.DisplayAlerts = False
在这种情况下引发异常,我们是否需要使用ReadOnly参数再次尝试,如:
Workbooks.Open
我已阅读其他帖子(包括this one),建议第一个代码段中的Workbooks.Open("N:\path_to_workbook\workbook.xlsx", ReadOnly:=True)
成功,并且工作簿以只读方式打开,但这不是非常清楚。
不幸的是,我没有配置测试环境来自己复制这个场景,否则这将是明显的答案。
答案 0 :(得分:1)
我在网络驱动器环境中测试过,发现了以下内容。如果文件由用户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