Setelah mencoba mengambil/mengcopy data dari sumber yang sama atau
file excel yang sama, mari sekarang kita mencoba untuk mengambil/membaca
data dari file excel yang lain (external), untuk diketahui bahwa excel
bisa juga dikatakan seperti sebuah database dengan beberapa tabel dengan
hal ini beberapa sheet.
Untuk saat ini kita belum membahas hal tersebut, tapi kita mencoba membaca data dari satu sheet pada suatu file excel.
Layaknya membuka file pada excel [File – Open – pilih nama file],
karena kita menggunakan excel makro, kita bisa gunakan perintah [ Workbooks.Open “path/namafileexcel “], untuk lebih jelasnya mari kita lihat ilustrasi dibawah ini :
buatlah satu button untuk mengambil data satu cell/kolom (A1) suatu sheet dari file lain (file external dengan nama file data_excel.xls ), Nilai atau isi dari kolom A1 tersebut akan kita ambil dan dicopy ke file pemanggil, temapt anda membuat button tadi.
dengan coding vba untuk button sbb:
Sub btn_ambil()
Dim hasil As String
fpath = Application.ActiveWorkbook.Path
fTarget = “data_excel.xls”
ftujuan = ActiveWorkbook.Name
Workbooks.Open fpath & “” & fTarget
Windows(fTarget).Activate
Application.Range(“A1”).Select
hasil = ActiveCell.Value
MsgBox “Data Cell A1 yang akan dicopy” & vbCrLf & “adalah = ” & hasil
Windows(ftujuan).Activate
Application.Range(“A10”).Select
ActiveCell.Value = hasil
Windows(fTarget).Activate
ActiveWorkbook.Save
Windows(fTarget).Close
End Sub
Coding/script diatas hanya digunakan untuk mengambil data satu cell/kolom saja, bagaimana jika kita ingin membaca dari semua range mulai dari dari cell A1,
nah ini saya berikan satu contoh sederhana, sama seperti diatas bedanya
, untuk coding dibawah ini akan membaca dari kolom A1 sampai
diketemukan kolom A1 kosong.
seperti contoh dibawah ini (data_excel.xls)
dengan coding pada button sbb :
Sub btn_ambil_2()
Dim hasil As String
fpath = Application.ActiveWorkbook.Path
‘file yg mau diambil/copy datanya
fTarget = “data_excel.xls”
ftujuan = ActiveWorkbook.Name
Workbooks.Open fpath & “” & fTarget
Windows(fTarget).Activate
Application.Range(“A1”).Select
‘Baca per kolom setiap baris
r = 0
c = 0
tempbaris = ActiveCell.Offset(r, 0).Value
While tempbaris <> “”
c = 0
tempkol = ActiveCell.Offset(r, c).Value
While tempkol <> “”
ambil = ActiveCell.Offset(r, c).Value
Windows(ftujuan).Activate
If r = 0 Then
Range(“A10”).Select
End If
ActiveCell.Offset(r, c).Value = ambil
c = c + 1
Windows(fTarget).Activate
tempkol = ActiveCell.Offset(r, c).Value
Wend
r = r + 1
tempbaris = ActiveCell.Offset(r, 0).Value
Wend
Windows(fTarget).Activate
ActiveWorkbook.Save
Windows(fTarget).Close
End Sub