Anda di halaman 1dari 7

Halo Mas Tegus,

Pertanyaannya irit banget, jadi saya gak tau persis apa sebenarnya yang diinginkan.
Tapi saya coba nebak-nebak apa yang diinginkan yah..
Oke, yang akan saya lakukan adalah mengcopy isi file:
1. Dari beberapa file.
2. Pada "sheet1".
3. Dari kolom 1 sampai kolom 4 (A sampe D).
4. Namun memiliki baris yang bervariasi.
Misalkan, saya punya 2 file sumber untuk di copy (Book4_test.xlsx dan Book5_test.xlsx)
seperti pada gambar berikut:

5. Selanjutnya data saya copy ke sheet Data pada file Utama.


Sip.. Jadi, yang perlu dilakukan untuk tugas di atas adalah:
1. Buka sebuah file xlsm. Pada contoh ini, saya file nya saya beri nama: Book3.xlsm. Kita
sebut aja sebagai file utama OK.
2. Buat sebuah Sub Prosedur atau macro pada module. Saya buat dengan nama: Copypaste()
seperti gambar berikur:

2. Tulis Baris program berikut:


Sub copypaste()
'Munculkan dialog box untuk milih file XLSX.
'Nama file yang terpilih disimpan di variable: FileTerpilih.
FileTerpilih = Application.GetOpenFilename _
("XLSX File (*.xlsx),*.xlsx", Title:="Open file",
MultiSelect:=True)
'Jika cancel, atau tidak jadi milih, maka keluar dari Sub prosedur.
If VarType(FileTerpilih) = vbBoolean Then
Exit Sub
End If
'simpan dulu nama file utama (yang ada macronya).
'nanti digunakan untuk manggil file utama.
NamaFileUtama = ActiveWorkbook.Name
'Hitung jumlah file yang dipilih.
JumlahFile = UBound(FileTerpilih)
'Matikan alert agar Excel gak nanya macem-macem.
Application.DisplayAlerts = False
'Lakukan pengulangan aksi sejumlah file yang dipilih.
For i = 1 To JumlahFile
'Buka file yang dipilih satu per satu
Workbooks.Open FileTerpilih(i)
With ActiveWorkbook.Worksheets("Sheet1")

'Cek baris terakhir file yang akan dicopy.


'Ini dilakukan jika kita ingin meng-copy semua isi sampai baris
terakhir.

'Jika range yang akan dicopy sudah pasti misal A1:D4, maka ini
tidak diperlukan.
BarisTerakhirFilePilihan = .Cells(.Rows.Count, 1).End(xlUp).Row
'Cek barus terakhir file tempat untuk dipaste.
'disini, saya paste data pada file utama di sheet Data.
BarisTerakhirFileUtama =
Workbooks(NamaFileUtama).Worksheets("Data") _
.Cells(Workbooks(NamaFileUtama).Worksheets("Data").Rows.Count,
1).End(xlUp).Row
'lakukan proses copy paste.
.Range("A1:D" & BarisTerakhirFilePilihan).Copy _
Destination:=Workbooks(NamaFileUtama).Worksheets("Data").Range("A" &
BarisTerakhirFileUtama + 1)
End With
'tutup file yang tadi dicopy
ActiveWorkbook.Close
Next i
'Jangan lupa idupin lagi alertnya.
Application.DisplayAlerts = True
End Sub

3. Selanjutnya, saya buat 2 buah sheet pada file utama yaitu "Beranda" dan "Data".

4. Pada sheet Beranda, saya letakkan sebuah Form Control Command Button (ingat, form
control ya, BUKAN activeX Control.)
5. Berikutnya, ASSIGN macro "Copypaste()" yang sebelumnya telah kita buat pada
CommanButton.

6. Pada sheet "Data", biarkan kosong. Karena disinilah kita akan menyimpan data hasil copy
dari file sumber.

7. SELESAI.. Yup.. selesai sudah pembuatan macro kita..


Selanjutnya, akan kita coba. Dan, bagaimana cara kerjanya?
1. Coba klik Command button.
2. Akan muncul sebuah dialog box yang akan meminta kita untuk memilih file sumber. Pilih
dua file yang tadi saya siapkan yaitu: Book4_test.xlsx dan Book5_test.xlsx.

3. Klik OK.
4. Macro akan bekerja mengcopy dari file sumber ke file utama sheet Data.
5. Setelah selesai, coba cek file utama pada sheet "Data". Sekarang akan terdapat semua data
dari 2 file sumber yang kita pilih.

Oke..
Semoga bermanfaat..

'Bagian untuk mengcopy


Workbooks("Book1").Worksheets("Sheet1").Range("A1:A5").Copy
'Bagian untuk mem-pastespecial
Workbooks("Book2").Worksheets("Sheet1").Range("A1:A5").PasteSpecial _
Paste:=xlPasteValues, _
Operation:=xlNone

Sedangkan cara menggunakannya (kita coba gunain pada contoh saya sebelumnya yah)
silahkan copypaste code berikut:
Sub copypaste()
'Munculkan dialog box untuk milih file XLSX.
'Nama file yang terpilih disimpan di variable: FileTerpilih.
FileTerpilih = Application.GetOpenFilename _
("XLSX File (*.xlsx),*.xlsx", Title:="Open file",
MultiSelect:=True)
'Jika cancel, atau tidak jadi milih, maka keluar dari Sub prosedur.
If VarType(FileTerpilih) = vbBoolean Then
Exit Sub
End If
'simpan dulu nama file utama (yang ada macronya).
'nanti digunakan untuk manggil file utama.
NamaFileUtama = ActiveWorkbook.Name
'Hitung jumlah file yang dipilih.
JumlahFile = UBound(FileTerpilih)
'Matikan alert agar Excel gak nanya macem-macem.
Application.DisplayAlerts = False
'Lakukan pengulangan aksi sejumlah file yang dipilih.
For i = 1 To JumlahFile
'Buka file yang dipilih satu per satu
Workbooks.Open FileTerpilih(i)
With ActiveWorkbook.Worksheets("Sheet1")

terakhir.

'Cek baris terakhir file yang akan dicopy.


'Ini dilakukan jika kita ingin meng-copy semua isi sampai baris

'Jika range yang akan dicopy sudah pasti misal A1:D4, maka ini
tidak diperlukan.
BarisTerakhirFilePilihan = .Cells(.Rows.Count, 1).End(xlUp).Row
'Cek barus terakhir file tempat untuk dipaste.
'disini, saya paste data pada file utama di sheet Data.
BarisTerakhirFileUtama =
Workbooks(NamaFileUtama).Worksheets("Data") _
.Cells(Workbooks(NamaFileUtama).Worksheets("Data").Rows.Count,
1).End(xlUp).Row
'lakukan proses copy.
.Range("A1:D" & BarisTerakhirFilePilihan).Copy
End With
'lakukan proses paste untuk valuenya saja..
With Workbooks(NamaFileUtama).Worksheets("Data")
.Range("A" & BarisTerakhirFileUtama + 1) _

.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone

End With

'tutup file yang tadi dicopy


ActiveWorkbook.Close
Next i
'Jangan lupa idupin lagi alertnya.
Application.DisplayAlerts = True
End Sub

Hasilnya sama dengan contoh saya sebelumnya, bedanya, kali ini semua formula akan
menjadi value..
S

Anda mungkin juga menyukai