打开两个不同的工作簿时运行时错误1004

时间:2013-06-27 15:49:21

标签: excel-vba vba excel

我正在尝试打开两个不同的工作簿来传输数据。工作簿的完整位置位于当前工作簿的两个单元格中。第一个工作簿正确打开但打开其他工作簿时出错。它说:

run time error 1004. File can't be found.

但是,如果我直接在代码中使用工作簿的路径,那么它工作正常。任何人请告诉我我做错了什么。

Sub ProcessReport()


Dim MainWb As Workbook
Dim DestWb As Workbook


' Load source and destination files
Set DestWb = Workbooks.Open(Range("E10").Value)
Set MainWb = Workbooks.Open(Range("E6").Value)

' Code for manipulation


End Sub

1 个答案:

答案 0 :(得分:1)

在原始代码中,第二个workbooks.open命令正在从工作簿“DestWb”读取单元格“E6”,因为这是执行命令时的activeWorkbook,而不是保存宏的工作簿。 您可以通过更改:

来解决此问题
Set DestWb = Workbooks.Open(Range("E10").Value)
Set MainWb = Workbooks.Open(Range("E6").Value)

对此:

Set Ws = ThisWorkbook.Sheets("Sheet1")
Set DestWb = Workbooks.Open(Ws.Range("E10").Value)
Set MainWb = Workbooks.Open(Ws.Range("E6").Value)

这将从运行宏的工作簿中将“Sheet1”保存为对象引用,以便宏尝试使用保存宏的工作簿中的“E10”和“E16”中的文件路径。 Range("E6").Value现已通过工作表ws进行了限定 您可以将“Sheet1”更改为文件路径在宏工作簿中的选项卡。