2016-03-30 11 views
0

Birden çok çalışma kitabından bir dizi değer almak ve bir ana çalışma kitabının sonraki boş satırına girmek istiyorum. Masterwork kitabındaki karşılık gelen sekmesine girilecek birden fazla çalışma kitabı olacağından bu kodu mümkün olduğunca düzene koymaya çalışıyorum.Farklı çalışma kitaplarındaki başka bir hücre aralığına eşit hücre aralığı yaratın

Örnek:

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

Sorular: satır miktarı günlük değişecek eğer

  1. başka aralığa hücreler = bir dizi yapabilir miyim?
  2. Kod içinde çalışma kitaplarına ve çalışma sayfası değişkenlerine başvurmanın kolay bir yolu var mı? Örneğin: wk1.sht1.Origin.Value = wk2.sht2.Destination.Value

kodu:

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

Aralıkları birbirine eşit ayarlamak için aynı boyutta olmaları gerekir. – findwindow

cevap

1

nesnelerin Kişisel referans yanlıştır - Eğer Menzil nesneleri ayarladıktan sonra tam "yol" dahil etmek gerekmez:

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

Cevabınız için çok teşekkürler. Bir dizi hücre atamak için bir yol var mı = değişen bir aralık mı? Veya bunun için .Copy kullanmam gerekiyor mu? –

+0

"Değişen" aralık nedir? Bunu nasıl manuel olarak yapacağınızı açıklarsanız yardımcı olabilir. –

+0

Her gün Excel formatıyla bir etkinlik günlüğü alıyorum. Sütunlar aynı kalır ancak güne bağlı olarak 0-100 satır veri olabilir. Bu satırları kopyalarım ve bunları çok sayıda e-tablodaki verileri içeren bir ana e-tabloya yapıştırıyorum. Amacım, verileri bu günlüklerden ana elektronik tabloda karşılık gelen sekmelere taşımak için otomatikleştirmektir. –