【发布时间】: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 实例中打开目标工作簿?