Copy Data Dari Multiple File

Nulis lagi ah biar ga lupa... kebetulan ada temen kantor yang minta dibantuin untuk bikin makro yang berfungsi melakukan copy dari range yang ada di spesifik sheet dan beberapa workbook... aku langsung jawab... "ocreh ntar ya... aku ngelarin kerjaanku dulu".... Beberapa hari kemudian baru aku mencoba membuat makro permintaan teman kantorku... hal pertama yang terlintas dalam otakku adalah aku harus membuat tahapan prosesnya terlebih dahulu...
  1. Hal pertama adalah membuka excel baru untuk tempat kode makro
  2. Kemudian membuat tempat atau sheet untuk menempatkan hasil copy, sheet tersebut tak namain "gue"
  3. Kemudian membuka file workbook dan memilih nama sheet yang akan di copy
  4. Mencari Range data yang akan di copy
  5. Action copy
  6. Action Paste ke sheet baru, utk copy file pertama selesai
  7. Selanjutnya melakukan copy file kedua, untuk proses dan kode makronya tetep, dari membuka file baru yang akan dicopy sampai proses paste
  8. Terakhir...menutup file yang telah di copy... selesai

Yup begitulah proses copy data dari multiple file....

Setelah tahu prosesnya... aku langsung membuka workbook excel dan langsung menuju jendela vba makro... dan langsung mengetikkan kode makronya yaitu :
Private Sub copy_multiplefile()
'sesuai proses nomor 2 aku ingin membuat sheet baru dengan nama "gue", jadi supaya tidak terjadi error, apabila sudah ada sheet "gue", aku harus menghapus sheet tersebut, kodenya adalah,

Application.DisplayAlerts=False
On Error Resume Next
ActiveWorkbook.Worksheets("gue").Delete
On Error GoTo 0

Application.DisplayAlerts = True
'setelah terhapus kemudian aku membuat sheet baru dengan nama "gue" dan supaya lebih memudahkan, aku mensetting worksheet gue menjadi "ws", kodenya,

Set ws=ThisWorkbook.Worksheets.AddSheet
ws.Name="gue"
'kemudian aku membuka file excel pertama yang akan di copy
'COPY PASTE FILE PERTAMA
Workbooks.Open Filename:="D:karsonoFile1.xls" 'tempat file
'setelah terbuka, aku langsung mencari nama sheet dan range datanya
With Worksheets("data1")

Intersect(.UsedRange, .Range("A1", .Cells(Rows.Count,Columns.Count))).Copy 'mencari range yang ada datanya Dimulai dari cell A1 supaya judul datanya ikut ke copy, setelah di copy kemudian aku menuju ke sheet "gue" dan melakukan paste special value Dimulai dari cell yang kosong

ws.Range("A" & ws.Range("A65536").End(xlUp).Row).Offset(0, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'file pertama sudah ke copy, kemudian aku membuka lagi file excel yang lain dengan proses dan kode yang sama
'COPY PASTE FILE KEDUA
Workbooks.Open Filename:="D:karsonoFile2.xls"

With Worksheets("data2")
Intersect(.UsedRange, .Range("A2", .Cells(Rows.Count, Columns.Count))).Copy 'perbedaannya disini adalah aku melakukan copy data dari A2, jadi cuman datanya aja

End With
ws.Range("A" & ws.Range("A65536").End(xlUp).Row).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

'nah... disini baru dijelaskan kode ini adalah mencari range, bisa dilihat pada kode offset antara paste file pertama .offset(0,0) dan paste file ke dua .offset(1,0), untuk yang paste pertama bermaksud mengcopy, tanpa berpindah dari range yang ditemukan, tetapi untuk paste yang kedua bermaksud apabila ditemukan range maka, dia akan berpindah satu baris ke bawah jadi tidak akan menimpa yang atasnya... begicu...
'DEMIKIAN UNTUK FILE SETERUSNYA
'Terakhir aku menutup file-file yang telah dicopy
Workbooks("File1").Close savechanges:=False

Workbooks("File2").Close savechanges:=False
End Sub
'beress
Untuk melihat hasilnya langsung pencetAlt + F8 Tetapi kalo aku lebih suka membuat commandbutton, langsung aja aku bikin tuch commandbutton, klik 2x untuk pergi ke jendela vba makro, aku tulis dech kodenya
Sub CommandButton1_Click()

Call copy_multiplefile 'memanggil makro untuk copy multiplefile

End Sub
'beres...
Tinggal kasih dah ni rumus......

Share on Google Plus

About Unknown

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.