锁定以进行编辑 - VBA只读

时间:2017-12-14 17:02:57

标签: excel vba readonly locked-files

我有一个打开多个文件并在其上运行代码的宏。但是,如果涉及一个文件" 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文档。

3 个答案:

答案 0 :(得分:0)

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

MSDN link

  

<强>通知
  如果无法在读/写模式下打开文件,则此参数为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中注明,那么它就会消失:

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

答案 2 :(得分:0)

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

我已针对Excel 365对此进行了测试。

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

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

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

link to VBA Documentation