首页 文章

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

提问于
浏览
0

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

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

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

相关问题