2012-08-31 115 views
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 

我想用它的範圍名一起復制範圍之內的所有數據粘貼到我的當前工作簿。

回答

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 

我增加了一些變數,嘗試讓它更靈活一點。

+0

這似乎是一種選擇,但我希望我的新範圍創建時不需要任何手動干預就可以創建「myRange」而不是「A1」。我想知道是否有任何實用程序來重命名範圍或不是?現在我想在此之後追加一個範圍;我相信在這種情況下我不能使用「A1」。 – Him

+0

+ 1 :) @Him:要附加到現有的範圍,您可能想使用'UNION'或重新定義範圍? –

+0

謝謝它的作品:) – Him

相關問題