2016-06-22 16 views
0

ブックのブックを別のブックにコピーする必要があります。しかし、残念なことに、2つのワークブックのサイズのため、同時に開くことはできません。だから、アイデアは二つのステップでそれを行うことでした名前付き範囲とオブジェクトの操作

1)を開きworkbook1

2を1つのワークブックから対象範囲の範囲を保存して閉じworkbook1

)オープン workbook2オブジェクトの範囲を救いますワークブックの範囲に設定

しかし、これは機能しません。誰かがコードを助けることができますか?ありがとう。

Dim Temp as Range 
Workbooks.Open (Model1) 
Workbooks(Model1).Activate 
Temp = Range("First_Input").Value 
Workbook(Model1).Close 

Workbooks.Open(Model2) 
Workbooks(Model2).Activiate 
Range("Second_Input").Value = Temp.Value 
+4

定義できますか_not working_ – litelite

+0

私は完全な解決策に飛び込む用意はできていません。しかし、データがどのように構造化されているかに応じて、ファイルを一切開くことなくプルできるODBCクエリを調べる必要があります。 – jcarroll

答えて

0

以下の実施例以下のサンプルコード:

  • コメントが埋め込まれ(変更なし)であるとして動作しています。最初にランダムデータを使用して ワークブックでこれを試してみてください。
  • この例は、すでに開いているワークブックに対して機能し、ワークブックを「開く」ために変更します。
  • この例では範囲アドレスを使用しています。あなたは何をしたいかによってこれで遊ぶことができます。

次のように動作するので、実装しやすく、コピーしてExcelに貼り付けることが必要です。

Public Sub CopyData() 


Dim wkb1 As Workbook 
Dim wkb2 As Workbook 
Dim sht1 As Worksheet 
Dim sht2 As Worksheet 
Dim wkb1rng As Range 
Dim wkb2rng As Range 

'Point to Workbook and Sheet 1 
'Set wkb1 = Workbooks.Open(Model1) ' To Open Workbook 
Set wkb1 = Workbooks("Book1") ' If workbook is open already 


'Sheets is the Index use String for the sheet name 
Set sht1 = wkb1.Sheets(1) 

' Dont need this if you moving objects directly in and out of memory. 
' Workbooks(Model1).Activate 

' Point to Range 
Set wkb1rng = sht1.Range("First_Input") 

' What is the address of the Range 
Dim address As String 
address = wkb1rng.Cells.address 

'Point to Workbook and Sheet 2 
Set wkb2 = Workbooks("Book2") 

'Sheets is the Index use String for the sheet name 
Set sht2 = wkb2.Sheets(1) 

'I imagine Second_Input should be output? 
'Use this only if the data range is exactly the same size 
'Set wkb2rng = Range("Second_Output") 
'else use this ... 
Set wkb2rng = sht2.Range(address) 

'Copy data across ... 
wkb2rng.Value = wkb1rng.Value 

End Sub 
関連する問題