【问题标题】:Saving variable references to workbooks using ActiveWorkbook使用 ActiveWorkbook 保存对工作簿的变量引用
【发布时间】:2019-06-03 18:25:51
【问题描述】:

我正在尝试获取对两个特定工作簿的永久引用,但是在查看本地窗口时,它们没有

我也尝试过引用 ThisWorkbook.Name,但似乎无法解决问题。它似乎总是回到引用 Workbook/ThisWorkbook。

Sub Import_data()

Dim wb As Workbook
Dim sFound As String, WB1 As Workbook, WB2 As Workbook

Set WB1 = ThisWorkbook

sFound = Dir(ActiveWorkbook.path & "\*Name.xlsx")    'the first one found
If sFound <> "" Then
    Workbooks.Open Filename:=ActiveWorkbook.path & "\" & sFound
    Set WB2 = ActiveWorkbook
End If

WB2.Worksheets("Sheet2").Range("A5").Copy _
WB1.Worksheets("Sheet2").Range("K18")


End Sub

运行 sub 时出现下标超出范围错误。

【问题讨论】:

  • 试试答案中的代码。您分配 WB2 的方式错误,您应该将复制粘贴代码放在 If 条件中。

标签: excel vba


【解决方案1】:

试试这个:

Sub Import_data()

Dim wb As Workbook
Dim sFound As String, WB1 As Workbook, WB2 As Workbook

Set WB1 = ActiveWorkbook

sFound = Dir(ActiveWorkbook.Path & "\*Name.xlsx")    'the first one found

If sFound <> "" Then

    Set WB2 = Workbooks.Open(Filename:=ActiveWorkbook.Path & "\" & sFound)
    WB2.Worksheets("Sheet2").Range("A5").Copy
    WB1.Worksheets("Sheet2").Range("K18").PasteSpecial xlPasteValues

End If



End Sub

【讨论】:

  • 我试过这段代码,但是 WB1 和 WB2 仍然指向本地窗口下的同一个工作簿,我仍然得到下标超出范围错误。
  • 其实,我的错。我的工作表参考无效。指向正确的床单和它的固定。感谢您的帮助。
【解决方案2】:

改变

Workbooks.Open Filename:=ActiveWorkbook.path & "\" & sFound
Set WB2 = ActiveWorkbook

Set WB2=Workbooks.Open(ActiveWorkbook.path & "\" & sFound)

【讨论】:

  • 问题也在范围内,因为无论 sfound 是真还是假,复制粘贴代码都在运行。它应该在 If Condition 内。
【解决方案3】:

如果你想要一个干净的代码:永远不要使用ActiveWorkbook

试试这个:

Sub Import_data()

Dim wb As Workbook
Dim sFound As String, WB1 As Workbook, WB2 As Workbook

Set WB1 = ThisWorkbook

sFound = Dir(WB1.path & "\*Name.xlsx")    'the first one found

If sFound <> "" Then
    Set WB2 = Workbooks.Open(Filename:=WB1.path & "\" & sFound)
    WB2.Worksheets("Sheet2").Range("A5").Copy _
    WB1.Worksheets("Sheet2").Range("K18")
End If

End Sub

【讨论】:

  • 在编辑器窗口中试试你的代码,你会知道里面还是有些红的!
  • 是的,我只是错过了(),我编辑了我的答案。谢谢
猜你喜欢
  • 2020-01-06
  • 2013-08-17
  • 2010-11-15
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
  • 2022-01-16
相关资源
最近更新 更多