1

我有一个可以打开多个文件的宏。如果涉及到文件“锁定编辑”,它会给我一个错误说

文件名当前正在使用中。稍后再试。

如何使它以只读方式打开所述文件?我试过了:

Workbooks.Open FileName:=Selected_EOS_Report_File, ReadOnly:=True

Workbooks.Open FileName:=Selected_EOS_Report_File, ReadOnly:=True, IgnoreReadOnlyRecommended:=True

更新:第一种方法确实有效。我的代码在通过“Selected_EOS_Report_File”变量的多个文件上运行。在某些时候,通过的文件是 Excel 临时文件(文件名以“~$”开头)。我创建了一个 if/then 语句来跳过任何此类文件。

4

3 回答 3

0

据我所知,你需要Notify:= True

MSDN 链接

Notify
如果文件无法以读/写模式打开,则此参数为 True 以将文件添加到文件通知列表中。Microsoft Excel 将以只读方式打开文件,轮询文件通知列表,然后在文件可用时通知用户。如果此参数为 False 或省略,则不请求通知,并且任何打开不可用文件的尝试都将失败。

于 2017-12-14T17:09:42.417 回答
0

下面的代码适用于我遇到的类似问题。这将设置 ReadOnly 和 IgnoreReadOnlyRecommended 参数。

我在 Excel 365 上对此进行了测试。

ReadOnly:True 以只读模式打开工作簿。

IgnoreReadOnlyRecommended:如果 Microsoft Excel 不显示只读推荐消息(如果使用只读推荐选项保存工作簿),则为 True。

dim wbReadOnly as Workbook
Set wbReadOnly = Workbooks.Open(strXLSFileName, , True, , , , True)

链接到 VBA 文档

于 2019-01-22T18:25:31.887 回答
0

尝试这个?

Dim wb As Workbook

Set wb = GetObject(Selected_EOS_Report_File)

wb.Open 'ReadOnly:=True (removed the readonly part)

来自这篇文章: Opening .xlsx with VBA, File in Use error。只读不工作

编辑

此处的帖子表明旧版本存在类似问题,如果您取消日期到 xlsx,它就会消失:

https://social.technet.microsoft.com/Forums/en-US/5c9f7444-a2c7-4598-beca-21a6d5575d94/excel-file-currently-in-use

于 2017-12-14T18:13:18.027 回答