1

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

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

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

子流程报告()


将 MainWb 调暗为工作簿
将 DestWb 调暗为工作簿


' 加载源文件和目标文件
设置 DestWb = Workbooks.Open(Range("E10").Value)
设置 MainWb = Workbooks.Open(Range("E6").Value)

' 操作代码


结束子
4

1 回答 1

2

在您的原始代码中,第二个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”更改为宏工作簿中文件路径所在的任何选项卡。

于 2016-06-05T11:57:50.760 回答