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

时间:2015-10-06 13:09:40

标签: c# vb.net excel vba excel-vba

假设工作簿存在于共享网络驱动器上,并由用户A打开。如果用户B尝试通过双击打开此文件,则会出现类似以下提示:

enter image description here

如果用户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) 成功,并且工作簿以只读方式打开,但这不是非常清楚。

不幸的是,我没有配置测试环境来自己复制这个场景,否则这将是明显的答案。

1 个答案:

答案 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