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

我想从模板复制一个命名的范围到我当前的工作簿,这是空白的。 问题是我没有任何现有的范围内这个新的工作簿。 所以,我不能复制粘贴从其他书的范围。 这是我已经尝试,但似乎没有工作:

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 

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

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

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

 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 

我添加了几个variables,试图使它更灵活一些。