复制将命名范围从一个工作簿粘贴到另一个工作簿

时间:2012-08-31 07:27:03

标签: excel vba

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

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

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

1 个答案:

答案 0 :(得分: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

我添加了一些变量,试图让它变得更灵活。