Pada pembahasan sebelum nya hanya menggabungkan file excel dengan sheet yang sedang aktif.
artinya kita tidak bisa memilih sheet mana yang akan kita gabungkan.
Yuk kita simak dan praktekan langkah-langkah nya:
Daftar Isi:
- Langkah 1 : Siapkan satu file excel yang berisi list file yang akan kita gabungkan.
- Langkah 2 : Copy paste kode macro di bawah ini
- Langkah 3 : Buat tombol untuk menjalankan kode macro
Langkah 1 : Siapkan satu file excel yang berisi list file yang akan kita gabungkan.
Siapkan satu file yang berektensi XLSM atau XLSB karena versi excel 2007 ke atas ,hanya ektensi ini yang bisa menyimpan kode macro.
perhatikan gambar berikut:
Keterangan no 1: file yang berektensi XLSM , nama file terserah anda
Keterangan no 2 : buat 2 sheet , yang pertama beri nama data_file_yg_akan_dicopy ya... nama sheet nya harus benar benar sama dengan ini.
kemudian buat satu sheet lagi yang di beri nama Hasil ya. sekali lagi nama file nya harus sama. sheet ini adalah tempat menampung data yang sudah di gabungkan.
Keterangan no 3 : buat list file yang akan di gabung,struktur nya harus sama dengan yang di gambar di mulai dari kolom A dan berakhor di kolom H.
Kolom A: Isi nomor, ini hanya sebagai referensi jumah file saja
Kolom B: Isi dengan nama file yang akan di gabung boleh semua ektensi excel, dalam contoh saya menggunakan XSLB karena kebetulan saja.
Kolom C : Isi dengan nama folder tempat menyimpan file tersebut
Kolom D: isi dengan nama sheet yang akan di gabung
Kolom E : Isi dengan mulai dari sel mana data yang akan di gabung
Kolom F : Isi dengan akhir dari sel yang akan di gabung
Kolom G: Isi dengan nama file yang akan menampung data setelah di gabungkan
Kolom H : Isi dengan sel Tujuan , dalam contoh saya mulai dari sel A1
catatan: anda bisa saja merubah nama sheet sesuai dengan keinginan tapi juga harus merubah kode macro nya
Langkah 2 : Copy paste kode macro di bawah ini
Copy kode di bawah dengan cara blok semua kode dan tekan Ctrl + C
Public namaFile As String
Public rangeygakandicopy As String
Public wb As Workbook
Public data As Workbook
Sub gabung()
Dim Hasil As String
Dim kolomasal As String
Dim daftarsheet As String
daftarsheet = "data_file_yg_akan_dicopy"
Sheets(daftarsheet).Select
Range("B2").Select
Set wb = ActiveWorkbook
Do While ActiveCell.Value <> ""
namaFile = ActiveCell.Offset(0, 1) & ActiveCell.Value
sheetasal = ActiveCell.Offset(0, 2)
rangeygakandicopy = ActiveCell.Offset(0, 3) & ":" & ActiveCell.Offset(0, 4)
Hasil = ActiveCell.Offset(0, 4).Value
kolomasal = Mid(ActiveCell.Offset(0, 5), 2, 1)
Application.Workbooks.Open namaFile, UpdateLinks:=False, ReadOnly:=True
Set data = ActiveWorkbook
Sheets(sheetasal).Select
Range(rangeygakandicopy).Copy
wb.Activate
Sheets("Hasil").Select
row_paling_akhir = data_terakhir(kolomasal)
Cells(row_paling_akhir + 1, 1).Select
Selection.PasteSpecial xlPasteValues, xlPasteSpecialOperationNone
Application.CutCopyMode = False
data.Close False
Sheets(daftarsheet).Select
ActiveCell.Offset(1, 0).Select
Loop
Exit Sub
End Sub
Public Function data_terakhir(col)
Dim row_paling_akhir As Long
With ActiveSheet
row_paling_akhir = .Cells(.Rows.Count, col).End(xlUp).Row
End With
data_terakhir = row_paling_akhir
End Function
Buka VBA editor di file excel yang sudah di siapkan..dengan cara menekan tombol ALT + F11 di keyboard.
Insert Module dan tekan ctrl + V untuk meletakan kode yang sudah di copy.
Perhatikan gambar berikut
Langkah 3 : Buat Tombol untuk menjalankan kode macro
tombol ini penting agar mudah saat eksekusi.
insert shape dan buat nama terserah anda, kemudian asign macro. jadi saat anda klik tombol tersebut maka akan menjalankan kode macro.
smoga bermanfaat dan ada yang punya pengalaman dan mau share menggabungkan banyak file excel menjadi satu. ?
Rgds
Effendi Wijaya
3 Comments
Pak Effendi Wijaya,
ReplyDeleteTerima kasih tutorialnya, clear dan bekerja dengan sangat baik.
Sangat membantu saya menggabungkan data tabel bulanan menjadi data satu tahun dengan sangat mudah dan cepat.
Banyak Nama File dan banyak Work Sheet tidak menjadi hambatan untuk sajikan data dengan cepat.
good luck
DeleteThis comment has been removed by the author.
ReplyDelete