我想将一个命名范围从模板复制到我当前的工作簿,这是空白的。问题是我在这个新工作簿中没有任何现有的范围。所以,我无法复制粘贴其他书籍的范围。这是我尝试过的,但似乎没有起作用:
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
我想将该范围内的所有数据粘贴到我当前的工作簿及其范围名称。
答案 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
我添加了一些变量,试图让它变得更灵活。