我正在尝试打开两个不同的工作簿来传输数据。工作簿的完整位置位于当前工作簿的两个单元格中。第一个工作簿正确打开但打开其他工作簿时出错。它说:
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
答案 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”更改为文件路径在宏工作簿中的选项卡。