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:\karsono\File1.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:\karsono\File2.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......

46 komentar:

  1. mas mau nanya nih, kebetulan lagi belajar excel, bagaimana kalau saya mau ambil beberapa kolom saja di ke 3 file excel yg berbeda, contoh di file 1 saya mau ambil kolom"Kode" file 2 mau saya ambil kolom"Jabatan", file 3 saya mau ambil kolom "status".

    BalasHapus
  2. Kode Makaro sama dengan atas, dengan perubahan :
    1. Ganti kode di bawah ini sesuai range kolom yang diinginkan :

    Intersect(.UsedRange, .Range("A2", .Cells(Rows.Count, Columns.Count))).Copy

    Misal range kolom yang akan di copy ada di kolom A, maka kode diatas diganti menjadi :
    Range("A:A").select

    Begitu seterusnya hingga file terakhir.
    2. Penempatan Data hasil copy, berarti di paste ke samping dan bukan ke bawah, kode yang harus dirubah :

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

    ganti kode diatas menjadi seperti dibawah ini :

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

    apabila di perhatikan kode diatas yang berubah hanyalah kode offsetnya saja yaitu offset (1,0) menjadi (0,1), untuk mengetahui lebih lanjut mengenai kode offset adalah dengan praktek, rubah kode offset dan lihat hasilnya.

    BalasHapus
  3. martin bogor

    maaf nih mau gabung nanya....

    klo untuk mengcopy data yg dicell di sheet1 ke sheet2 gimana ya dengan posisi data sheet1 a1 a2 c1 c2 c3 c10 c11 c12 sedangnkan hasil copian ad di b1 b2 b3 b4 b5 b6 b7 b8 gimana y? trims

    BalasHapus
  4. coba pake kode makro dibawah ini :

    Sub contoh()
    With Sheets(2)
    .Range("B1").Value = Sheets(1).Range("A1")
    .Range("B2").Value = Sheets(1).Range("A2")
    .Range("B3").Value = Sheets(1).Range("C1")
    .Range("B4").Value = Sheets(1).Range("C2")
    .Range("B5").Value = Sheets(1).Range("C3")
    .Range("B6").Value = Sheets(1).Range("c10")
    .Range("B7").Value = Sheets(1).Range("c11")
    .Range("B8").Value = Sheets(1).Range("C12")
    End With
    End Sub

    atau mau lihat contoh lain, mungkin berminat, Copy Multi Sheet Excel

    BalasHapus
  5. Mau nanya nih bos... Gimana caranya menduplikat row lebih dari satu baris (ke bawah) secara otomatis??

    BalasHapus
  6. misalkan di Range A1:A5 ada nilai 1 s/d 5 bikin masukkan kode makro di bawah ini ke jendela VBA Makro lalu run.

    Sub dup()
    Sheets(1).Cells(1, 2).Resize(Cells(Rows.Count, "A").End(xlUp).Row, 1).Value = Range("A1").Value
    End Sub

    Hasilnya pada kolom B1:B5 akan muncul nilai duplikasi dari Range A1...

    Apakah begitu...?

    BalasHapus
  7. Bang... boleh tuker link ga?

    BalasHapus
  8. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  9. Mau Nanya Bos.. bikin ScroolBar : Mohon bantuan dilengkapi ga kelar kelar.. Ambil data di Sheet2 untuk Blanko di Sheet1.
    Cat: Supaya Bisa Otomatis kebawah Scrool dari Range Sheet2 contoh "b3:b10" kok + 1 gak mau scrool. Namun Scrool jadi angka 2 padahal itu text,.. Ini bikinannya :(mohon dilengkapi) trims ;

    Private Sub ScrollBar1_Change()
    Dim Range As Integer
    Sheet1.Range("e5") = Sheet2.Range("b3") + 1
    Sheet1.Range("e6") = Sheet2.Range("c3") + 1
    End Sub

    adapula begini (tapi gak mau juga) :

    Private Sub ScrollBar1_Change()
    Dim Range As Integer
    Baris = Baris + 1
    Sheet1.Range("e5") = Sheet2.Range("b3 + 1")
    Sheet1.Range("e6") = Sheet2.Range("c3 + 1")
    End Sub

    BalasHapus
  10. pak gimana cara menyaring data dengan macro,,, misalnya hanya data tertentu aja yang diambil

    BalasHapus
  11. coba lihat di postingan aku... Auto Copy Filter di Excel... sistemnya hampir sama

    BalasHapus
  12. Mas Endri... maaf kelupaan... maksud pertanyaannya mengenai scroll apa yach...
    kalau saya gak salah tangkep... maksudnya nilai di cell E5, E6... dst, pada Sheet1, sama dengan nilai di Sheet2 Cell B3, C3 dst... begitukah ?

    kalau begitu... coba pake kode dibawah ini

    Sub coba()
    For i = 1 To 20 ' i adalah nilai antara 1 s/d 10
    Sheet1.Range("E" & 4 + i).Value = _
    Sheet2.Cells(3, 1 + i).Value
    Next i
    End Sub

    kode diatas pada umumnya mempunyai pengertian nilai E5 s/d E26 pada Sheet1 sama dengan nilai Sheet2 kolom 3 baris 2 ("B3") s/d kolom 24 baris 2 ("U3").

    Apakah begitu ?

    BalasHapus
  13. Ok makasih Info nya, saya coba pak

    BalasHapus
  14. Salam,..
    Pak gimana caranya Perintah (ctrl+F) atau FIND icon di Exel di jadikan ke bahasa code visual. contoh seperti icon print code visual nya :

    Sheet1.PrintPreview (maka akan muncul printview)

    kok saya coba Printah FIND (ctrl+f) dengan code :

    Sheet1.Find (gak mau jalan/dianggap salah code)

    BalasHapus
  15. Mas uliks, Kalau untuk membuka Dialog box perintah Find dengan macro, pake aja kode di bawah ini :

    Application.Dialogs(xlDialogFormulaFind).Show

    BalasHapus
  16. Ok Makasih Pak.
    Oh Ya pak kalok Icon Menu (code tadi) di Sheet1 (bekerjanya) untuk tampil di Sheet2 gimana pak code nya apa seperti ini :

    Sheet2.Application.Dialogs(xlDialogFormulaFind).Show

    Munculnya kok di sheet1 terus gak mau aktif /muncul ke Sheet2

    BalasHapus
  17. kalau perintahnya seperti itu sheet2 harus diaktifkan dulu, baru dimunculkan perintah find dialog box... kodenya.

    With Sheet2
    .Activate
    .Application.Dialogs(xlDialogFormulaFind).Show
    End With

    BalasHapus
  18. oo iya.. ok makasih pak
    Heee.,..

    BalasHapus
  19. Salam kenal,..
    Oh ya Pak bagaimana kerja di sheet1 tersimpan otomatis ke sheet2 dua dan bisa scrool kebawah saya coba ini kok error code nya :

    Sub Simpan_data()
    Dim baris As Integer
    Dim noNota As Integer
    With Worksheets(2)
    baris = 3
    baris = baris + 1
    Wend
    .Cells(baris, 2) = GetNoUrut
    .Cells(baris, 3) = Worksheets(1).Cells(6, 5)
    .Cells(baris, 4) = Worksheets(1).Cells(7, 5)
    End With

    BalasHapus
  20. Atau code yang salah tadi yang gak mau tadi ini pak :

    Sub Simpan_data()
    Dim baris As Integer
    With Worksheets(2)
    baris = 3
    baris = baris + 1
    Wend
    .Cells(baris, 3) = Worksheets(1).Cells(6, 5)
    .Cells(baris, 4) = Worksheets(1).Cells(7, 5)
    End With

    BalasHapus
  21. maaf mas, mo minta pencerahan sya import data dari file txt ke excel
    ex: 23-02-11 tapi kebaca format text
    cara macro merubah ke format date

    BalasHapus
  22. kenapa gak pake rumus biasa aja lebih simple, rumusnya : =DATE("20"&RIGHT(C25,2),MID(C25,4,2),LEFT(C25,2))

    BalasHapus
  23. tambahan C25 itu posisi cell tanggal txt (23-02-11)

    BalasHapus
  24. makasih atas solusinya,

    BalasHapus
  25. Salam kenal..
    ikutan tanya ya pak..

    bagaimana jika pada langkah "Mencari Range data yang akan di copy", data yang akan copy harus dicari dulu (bisa berubah-ubah) sehingga range data yang akan dicopy tidak selalu pada baris yang sama?

    (jika dilakukan secara manual, dimulai dengan search data yang akan dicopy, setelah ketemu, data tersebut dan data lainnya dalam baris yang sama dicopy dan dipaste pada workbook lainnya).

    tolong ya pak..
    terima kasih sebelumnya.

    Yoss

    BalasHapus
  26. Mau tanya

    Jika ada 3 sheet

    Sheet 1 berisi data A dan B

    Sheet 2 adalah data A yang didalamnya ada beberapa data yang di copy dan disesuaikan dengan nomor yang dibutuhkan di sheet 1

    Sheet 3 adalah data B yang didalamnya ada beberapa data yang di copy dan disesuaikan dengan nomor yang dibutuhkan di sheet 1

    Misal di sheet 1 kolom tipe data berisi data A, dan membutuhkan data kode produk, total biaya di data A nomor 24 maka copy sheet 2 nomor 24 di sheet 2 yaitu data kode produk dan total biaya.

    Begitupula jika pada kolom tipe data berisi data B


    Mohon bantuannya....

    Terimakasih banyak

    BalasHapus
  27. kalo mau ngambil cell value dari banyak workbook gmn ya? (dalam satu folder)..teims

    BalasHapus
  28. Gan kalo copy datanya di file tertentu gimana? maksudnya ada dialog box open file.

    BalasHapus
  29. dan hasil copy nya ditempatkan di sheet yg udh ada

    BalasHapus
  30. Gan kalo mo ngopy antar file range tertentu menuju file lain misalnya file A range C1 : C5 dalam kondisi non aktif menuju file B range F1:F5, gmn caranya ?

    BalasHapus
  31. bagaimana membuat tabel pada macro

    BalasHapus
  32. Posting yang bagus...bermanfaat...namun ada yg mau saya tanyakan, ada dua sheet. misal sheet 1 range c1:e10 berisi data yang ada formulanya. Nah saya mau copi paste dengan tombol ke sheet 2 range c1:e10. namun hasil pastenya hanya nilainya saja tidak termasuk formulanya..gimana caranya?

    BalasHapus
  33. Mas mau Tanya, saya ingin copy beberapa data di 1 sheet ke beberapa workbook baru tetapi difilter baris tertentu berdasarkan nama

    BalasHapus
  34. selamat malam

    mau tanya, cara mengopy sheet1 (yang di copy), ke sheet2-sheet3 (tempat paste range). untuk yang sheet2 hanya di paste di range (No.Urut,NISN,NIS, dan Nama). yang di sheet3 di paste di range (No.Urut,NIS,Nama,No.SKHU,Asal Sekolah). mohon maaf jika terlalu panjang lebar pembahasannya. terima kasih

    BalasHapus
  35. Pak mau tanya code VBA untuk hal berikut :

    1. isi sel sheet1 di copy ke sheet2 dengan urutan header berbeda, misal di sheet1 sel A1 (nama), sedangkan di sheet2 sel A1 (alamat), begitu seterusnya.
    2. misalkan baris 2 semua cell terisi (kolom A2:F2), tetapi dibaris berikutnya ada beberapa cell yang tidak terisi data, pada saat dicopykan ke sheet2, cell yang kosong tersebut diisi dengan data cell diatasnya.

    Terima kasih atas jawabannya.

    BalasHapus
  36. mas karsono tolong di bantu, saya punya masalah jadi saya ingin mengcopy data yang telah terinput ke sheet baru dengan catatan datanya berbentuk inputan, jadi sekali di input bila saya jalankan makronya akan ke copy di sheet baru, dan seterusnya dengan catatan tidak nibann hasil copyan sebelumnya

    BalasHapus
  37. Om, ikutan nanya boleh..kalau saya mau membuat satu worksheet yg bisa diisi rame2 tapi data biar gqk saling tumpang tindih bagaimana ya??
    Mohon pencerahannya..

    BalasHapus
  38. minta bantuanya dong,
    gimana caranya membuat macro untuk membuka suatu file yang dipilih, dimana saya mau ada dua tombol, tombol yg pertama : tombol untuk memilih file, dan ke dua tombol untuk menjalankan macro untuk mencopy file tersebut ke sheet yang lain.

    BalasHapus
  39. Permisi pak guru, minta bantuannya.. Kalo perintah copy misal kita dengan cara mengeblok data/valuenya dan bukan dg memilih cell. Codingnya bagaimana. Terima kasih sebelumnya pak guru.

    BalasHapus
  40. Salam kenal...
    Mau nanya kalau buat tombol perintah untuk copy data dari shet 1 ke shet 2 gimna ya pak??
    Mohon pencerahannya pak

    BalasHapus
  41. mas salam kenal, gmn cara agar macro berjalan dengan cepat pada excel. soalnya saya membuat aplikasi yang di dalamnya banyak sheet dan banyak macro, kadang eror dan lambat...mohon pencerahannya

    BalasHapus
  42. Salam Kenal...
    Ijin Bertanya bagaimana caranya jika kita ingin mengcopy tabel yang ada sesuai dengan jumlah yang kita tentukan.
    misal kita ingin mengcopy tabel tersebut sebanyak 3x secara berurut ke bawah dengan jeda Row kosong satu Row per setiap tabel sebagai pemisah. Terima Kasih atas jawabannya

    BalasHapus