【问题标题】:excel Method 'open' of object 'workbooks' failed error when opening a read only workbook打开只读工作簿时,对象“工作簿”的excel方法“打开”失败错误
【发布时间】:2016-08-01 18:23:25
【问题描述】:

我的代码应该打开一些工作簿,提取关键信息并关闭它们。我可以看到工作簿正在加载,但是当它即将打开时,我收到运行时错误 1004,上面写着

对象“工作簿”的“打开”方法失败

我的代码如下,当我调试时,它会将我带到 do while 语句下的第二行:

 Sub OEEsummmary()
Dim Gcell As Range
Dim MySheet As Worksheet
Dim Txt$, MyPath$, MyWB$
Dim myValue As Integer
Dim x As Long
Dim v As Variant, r As Range, rWhere As Range

MyPath = "L:\Manufacturing Engineering\Samuel Hatcher\"
x = 2
Set MySheet = ActiveSheet

Application.ScreenUpdating = False

Do While MySheet.Range("A" & x).Value <> ""
    MyWB = MySheet.Range("A" & x).Text
    Workbooks.Open Filename:=MyPath & MyWB, ReadOnly:=True, IgnoreReadOnlyRecommended:=True
    Set Gcell = ActiveSheet.Range("E21")
        With MySheet.Range("A" & x)
            .Offset(0, 7).Value = Gcell.Value
        End With
    ActiveWorkbook.Close savechanges:=False
    x = x + 1
Loop

End Sub

我尝试按照遇到相同问题但没有任何效果的其他人的指示将不同的定义变量更改为变体。非常感谢任何帮助,谢谢!

update* 我将两个有问题的文件名移到了列表的底部,并且所有其他文件名都打开并完美地复制了信息,但是当循环到达最后两个文件时,它给了我这个错误。所有文件都是底部 2 的操纵副本,所以我不明白为什么它不起作用

update2* 似乎唯一出现错误且不会加载的工作簿是在网络中的另一台计算机上打开的工作簿,当此程序运行时,所有工作簿都将在其他计算机上打开

【问题讨论】:

  • 出错时MyWB的值是多少?
  • 而且这个文件肯定存在于指定位置?您没有在单元格 A2 中添加任何会使文件名无效的尾随或前导空格?
  • 如果您正在打开一个xlsm 文件,可以在打开文件之前将Application.EnableEvents 设置为false。可能是它有代码尝试在工作簿中的某处执行更新,但它不能因为您以只读方式打开它?
  • 您能否从 Excel 本身手动打开这些文件?
  • Workbooks.Open 如果文件已经在应用程序中,则会像这样失败。仔细检查工作簿是否尚未打开(它们可能因为您正在处理它们而保持打开状态,或者它们可能隐藏在某些不可见的 Excel 实例中)。您可以重新启动 Excel 并重新运行它,或者在调试器中手动检查 Workbooks 对象(添加监视)。

标签: vba excel error-handling


【解决方案1】:

事实证明,一些文件已损坏,因此当代码遇到此问题时,它不起作用。这个问题的解决方案是关闭损坏的工作簿,然后当我重新打开它时,我单击打开旁边的箭头并选择“打开并修复”,然后保存文件的新副本,代码运行顺利

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    相关资源
    最近更新 更多