【发布时间】: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