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:
'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.
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..
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.
'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) _
End With
Hasilnya sama dengan contoh saya sebelumnya, bedanya, kali ini semua formula akan
menjadi value..
S