2016-03-30 21 views
0

複数のワークブックから値の範囲をとり、それをマスターワークブックの次の空白行に入力したいと考えています。マスターワークブックの対応するタブに入力される複数のワークブックが存在するため、このコードをできるだけ合理化しようとしています。セルの範囲を別のワークブックのセルの別の範囲と同じにする

例:

Column C (MasterWorkbook,Sheet 2) = Column A (Workbook 1, Sheet 1) 

質問:

  1. 行の量は毎日変更されます場合は、別の範囲にセル=の範囲を作ることはできますか?
  2. コード内でワークブックやワークシート変数を参照する簡単な方法はありますか? wk1.sht1.Origin.Value = wk2.sht2.Destination.Value

コード:たとえば

Sub CopyData() 


Dim wk1 As Workbook 
Dim wk2 As Workbook 
Dim sht1 As Worksheet 
Dim sht2 As Worksheet 
Dim Origin As Range 
Dim Destination As Range 

Set wk1 = Workbooks("Device") 
Set wk2 = Workbooks("Pri Access Master) 
Set sht1 = Worksheets(1) 
Set sht2 = Worksheets("Device") 

Set Origin = Range("B2").End(xlDown) 
Set Destination = Range("D120000").End(xlUp).Offset(1, 0) 

'(Isn't working)Copy data in column B and paste in next blank row of another workbook in another column 
wk2.sht2.Destination.Value = wk1.sht1.Origin.Value 


End Sub 
+0

範囲を同じに設定するには、同じサイズでなければなりません。 – findwindow

答えて

1

オブジェクトのあなたの参照が間違っている - あなたは範囲オブジェクトを設定したら、完全な「パス」を含める必要がいけない:

Sub CopyData() 


    Dim wk1 As Workbook 
    Dim wk2 As Workbook 
    Dim sht1 As Worksheet 
    Dim sht2 As Worksheet 
    Dim Origin As Range 
    Dim Destination As Range 

    Set wk1 = Workbooks("Device") 
    Set wk2 = Workbooks("Pri Access Master") 
    Set sht1 = wk1.Worksheets(1) 
    Set sht2 = wk2.Worksheets("Device") 
    Set Destination = sht2.Range("D120000").End(xlUp).Offset(1, 0) 

    'EDIT - dynamic copy range 
    Set Origin = sht1.Range(sht1.Range("B2"), sht1.Cells(sht1.Rows.Count, "B").End(xlUp)) 



    Destination.Resize(Origin.Rows.Count, Origin.Columns.Count).Value = _ 
                  Origin.Value 
End Sub 
+0

答えに感謝します。セル範囲を変更する方法はありますか?変化する範囲ですか?それとも、私は.Copyを使う必要がありますか? –

+0

「変化する」範囲とは何ですか?手動でこれを行う方法を説明すると役立ちます。 –

+0

毎日私はExcel形式でアクティビティログを取得します。列は同じままですが、日によって0〜100行のデータが存在する可能性があります。これらの行をコピーし、複数のスプレッドシートからのデータを含むマスタースプレッドシートに貼り付けます。私の目標は、これらのログからマスタースプレッドシートの対応するタブにデータを移動することを自動化することです。 –

関連する問題