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

コードには少なくとも2つの特定の問題があります。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 に答える