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...
Yup begitulah proses copy data dari multiple file....Tinggal kasih dah ni rumus......
Hal pertama adalah membuka excel baru untuk tempat kode makro
Kemudian membuat tempat atau sheet untuk menempatkan hasil copy, sheet tersebut tak namain "gue"
Kemudian membuka file workbook dan memilih nama sheet yang akan di copy
Mencari Range data yang akan di copy
Action copy
Action Paste ke sheet baru, utk copy file pertama selesai
Selanjutnya melakukan copy file kedua, untuk proses dan kode makronya tetep, dari membuka file baru yang akan dicopy sampai proses paste
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...
46 comments:
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.
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
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
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...?
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
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 ?
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)
Application.Dialogs(xlDialogFormulaFind).Show
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
With Sheet2
.Activate
.Application.Dialogs(xlDialogFormulaFind).Show
End With
Heee.,..
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
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
ex: 23-02-11 tapi kebaca format text
cara macro merubah ke format date
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
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
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
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.
Mohon pencerahannya..
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.
timah solder
Mau nanya kalau buat tombol perintah untuk copy data dari shet 1 ke shet 2 gimna ya pak??
Mohon pencerahannya pak
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
Posting Komentar