0

我想将命名范围从模板复制到我当前的工作簿,该工作簿是空白的。问题是我在这个新工作簿中没有任何现有范围。所以,我无法从其他书中复制粘贴范围。这是我尝试过但似乎不起作用的方法:

Sub cpyRange()

Dim rng1 As Range, rng2 As Range

Set rng2 = Workbooks.Open("C:\SVN\Template.xls").Sheets("Report").Range("REPORT")

rng2.Copy

ThisWorkbook.Sheets(1).Select

Selection.PasteSpecial Paste:=xlPasteValues


ActiveWorkbook.Save
ActiveWorkbook.Close

MsgBox ("done")

End Sub

我想将该范围内的所有数据及其范围名称复制粘贴到我当前的工作簿中。

4

1 回答 1

3

您的代码中至少有两个具体问题: 1. PasteSpecial 是 Range 的一种方法,而不是工作表。2.粘贴不复制范围名称。

下面的代码将复制到目标工作表的单元格 A1,然后创建一个名称来引用目标工作表中的选择:

Sub cpyRange()
Dim SourceWorkbook As Excel.Workbook
Dim RangeName As String
Dim TargetWorkbook As Excel.Workbook
Dim TargetSheet As Excel.Worksheet

RangeName = "REPORT"
Set SourceWorkbook = Workbooks.Open("C:\SVN\Template.xls")
SourceWorkbook.Sheets("Report").Range(RangeName).Copy
Set TargetWorkbook = ThisWorkbook
Set TargetSheet = TargetWorkbook.Sheets(1)
TargetSheet.Range("A1").PasteSpecial Paste:=xlPasteValues
TargetWorkbook.Names.Add RangeName, "='" & TargetSheet.Name & "'!" & Selection.Address
SourceWorkbook.Close savechanges:=True
MsgBox ("done")
End Sub

我添加了更多变量,以使其更加灵活。

于 2012-08-31T09:05:52.913 回答