我有一个打开多个文件并在其上运行代码的宏。但是,如果涉及一个文件" Locked for Editing"它会给我一个错误说
FileName目前正在使用中。稍后再试。
如何将其打开为只读文件?我试过了:
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临时文件(以&#34开始文件名;〜$"。)代码无法读取temp,所以我创建了一个if / then语句来跳过任何这样的文件,只读取已保存的Excel文档。
答案 0 :(得分:0)
据我所知,您需要Notify:= True
<强>通知强>
如果无法在读/写模式下打开文件,则此参数为True 将文件添加到文件通知列表中。 Microsoft Excel会 以只读方式打开文件,轮询文件通知列表,然后 在文件可用时通知用户。如果这个论点是 错误或省略,未请求通知,以及任何尝试 打开不可用的文件将失败。
答案 1 :(得分: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. Read-only not working
修改强>
此处的帖子表示旧版本的类似问题,如果您在xlsx中注明,那么它就会消失:
答案 2 :(得分:0)
以下代码适用于我遇到的类似问题。这将设置ReadOnly和IgnoreReadOnlyRecommended参数。
我已针对Excel 365对此进行了测试。
ReadOnly:为True,以只读模式打开工作簿。
IgnoreReadOnlyRecommended:如果Microsoft Excel不显示只读的推荐消息,则为true(如果工作簿是使用“只读推荐”选项保存的。)
dim wbReadOnly as Workbook
Set wbReadOnly = Workbooks.Open(strXLSFileName, , True, , , , True)