【问题标题】:Referencing a workbook, in another Excel instance, produces 'Run-time error '9': Subscript out of range'在另一个 Excel 实例中引用工作簿会产生“运行时错误 '9':下标超出范围”
【发布时间】:2019-11-27 10:37:16
【问题描述】:

我想在 Excel 的新实例中打开一个工作簿,然后将另一个(已经打开的)工作簿中几个不同工作表中的范围复制到新打开的工作簿中的指定范围。

这是我目前所拥有的:

Dim wbl As Workbook
Set wbl = Workbooks("exports  - 27thNov.xlsm")
Dim wsl As Worksheet
Set wsl = Sheets("odbd")
Dim lrl As Long
lrl = wsl.Range("A" & Rows.Count).End(xlUp).Row

Dim wbl2 As Workbook
Set wbl2 = Workbooks("pltemplate.xlsx")
Dim wsl2 As Worksheet
Set wsl2 = wbl2.Sheets("S")

wbl.Worksheets("odbd").Range("A2:AK" & lrl).Copy
wbl2.Activate
wsl2.Range("A4").Select
wsl2.Range("A4").PasteSpecial Paste:=xlPasteValues

注意:添加了激活和选择命令以尝试强制宏以某种方式工作。

此外,我更改了目标工作簿的名称(“pltemplate.xlsx”)以使其成为更简单的字符串,以及源工作表的名称(“S”),但我得到相同的运行 -时间错误信息。

抛出错误的行是:

Set wbl2 = Workbooks("pltemplate.xlsx")

【问题讨论】:

  • 在即时窗口(或变量浏览器)中,检查 Workbooks 集合。名字可能有点不对。即输入? Workbooks(0).Name 然后尝试? Workbooks(1).Name 等。
  • Set wbl2 = Workbooks("pltemplate.xlsx") 执行此行时,工作簿pltemplate.xlsx 必须已经在同一个 Excel 实例中打开。如果工作簿没有打开,你必须使用Set wbl2 = Workbooks.Open("pathtofile/pltemplate.xlsx")
  • @FoxfireAndBurnsAndBurns 有道理,最初我的代码是 Workbooks("source.xlsx").Worksheets("odbd").Range("A2:AK" & lrl).Copy - 格式相同对于粘贴目标,但我仍然会得到相同的运行时错误,这是我想尝试定义变量的时候
  • @Nick.McDermaid 您能否指导我如何操作,我对 VBA 还是很陌生,对所有术语和工具都不太熟悉
  • @Nick.McDermaid 我明白了,我猜最简单的解决方案是在与源工作簿相同的 Excel 实例中打开目标工作簿?

标签: excel vba


【解决方案1】:

在最后一次 OP 评论之后,解决方案是在同一个 Excel 实例中打开两个工作簿。

目标工作簿 (pltemplate) 已经打开,在上述代码之前有一些代码会打开一个新的 excel 实例

那么你就不能在不同 Excel 实例中打开的工作簿之间做任何事情。每个 VBA 宏都在自己的实例中运行,因此您唯一的解决方案是在同一个 excel 实例中打开两个工作簿:

Set wbl2 = Workbooks("pltemplate.xlsx") 执行此行时,工作簿pltemplate.xlsx 必须已经在同一个 Excel 实例中打开

如果工作簿没有打开,您必须使用:

Set wbl2 = Workbooks.Open("pathtofile/pltemplate.xlsx")

有关 Excel 实例和/或相关信息的更多信息:

How to reference a workbook from another excel instance

Running Multiple Instances of Excel simultaneously from VBA?

Can having multiple instances of Excel open cause VBA issues?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    相关资源
    最近更新 更多