Mengambil (Import) Data Dari Workbook Lain Menggunakan Macro VBA Excel

 Aplikasi Excelku. Selamat datang kembali Sobat Excel, Saya ucapkan banyak-banyak terimakasih kepada Sobat Excel semua yang sudah mengunjungi blog sederhana Saya ini. Pada kesempatan ini Saya akan berbagi sebuah tutorial mengenai cara mengambil (import) data dari workbook lain menggunakan macro VBA Excel.

Mengambil (Import) Data Dari Workbook Lain Menggunakan Macro VBA Excel

Tutorial ini Saya ambil dari salah satu Web yang sering juga memposting mengenai tutorial Excel seperti halnya blog Saya ini. Alamat web tersebut adalah : https://www.mtsbmtumbrasanom.id/2017/02/vba-macro-excel-import-file-excel-ke.html, namun pada tutorial ini Saya memodifikasinya agar terlihat lebih pro. Dan berikut ini langkah-langkahnya:

Cara Mengambil (Import) Data Dari Workbook Lain Menggunakan Macro VBA Excel

1. Siapkan sebuah sheet sebagai lokasi untuk menempatkan hasil copyan data dari workbook lain, pada contoh ini Saya menggunakan sheet1 kemudian Saya mengubah namanya menjadi Siswa, untuk lebih jelasnya silahkan perhatikan gambar di bawah ini:

Mengambil (Import) Data Dari Workbook Lain Menggunakan Macro VBA Excel

Seperti yang ditampilkan pada gambar di atas, sheet1 Saya ubah namanya menjadi Siswa, kemudian di dalam sheet Siswa tersebut Saya membuat sebuah deret data dimana dimasing-masing kolom isinya adalah :

  • Nomor;
  • NIS;
  • NISN;
  • Nama Siswa;
  • Jenis Kelamin; dan
  • Tempat, Tanggal Lahir; dan
  • Alamat
2. Membuat/mendesain Userform

Userform ini nantinya akan kita gunakan sebagai media dalam kita mengambil data (import) dari workbook lain, dan berikut langkah-langkahnya:

a. Buka lembar kerja Visual Basic di Excel kita, kemudian klik pada menu insert dan pilih Userform, silahkan tentukan tinggi dan lebarnya sesuai dengan keinginan masing-masing. Kemudian ubah namanya menjadi FrmImport dan ubah Captionnya menjadi Form Import Data, hasilnya seperti pada gambar di bawah ini:

Mengambil (Import) Data Dari Workbook Lain Menggunakan Macro VBA Excel

b. Sisipkan sebuah TextBox kedalam Userform tadi, kemudian ubah namanya menjadi Path, dan hasilnya seperti pada gambar di bawah ini:

Mengambil (Import) Data Dari Workbook Lain Menggunakan Macro VBA Excel

c. Sisipkan sebuah CommandButton, ubah namanya menjadi CmdCari, kemudian pada captionnya ubah menjadi Browse, kemudian letakkan persis disamping kanan TextBox tadi, dan hasilnya seperti pada gambar di bawah ini:

Mengambil (Import) Data Dari Workbook Lain Menggunakan Macro VBA Excel


  d. Selanjutnya copy CommandButton tadi sebanyak 2x dan namai masing-masing CommandButton hasil copyan tadi menjadi CmdImport dan CmdCancel, pada CommandButton (CmdImport) ubah captionnya menjadi Import dan pada CommandButton (CmdCancel) ubah captionnya menjadi Batal kemudian letakkan kedua CommandButton tersebut di bawah TextBox, dan hasilnya seperti pada gambar di bawah ini:

Mengambil (Import) Data Dari Workbook Lain Menggunakan Macro VBA Excel


3. Menyisipkan kode/script macro

Ada 2 (dua) kode/script macro, yang pertama harus disipkan ke dalam module dan yang satunya lagi harus disisipkan ke dalam Userform.

a. Kode/Script macro untuk Module, karena tadi belum menyisipkan sebuah module maka kita harus menyisipkan sebuah module terlebih dahulu, caranya klik pada menu insert kemudian module. Jika sudah, silahkan Copas kode/script macro di bawah ini kedalam module tadi:

Kode/Script Macro Untuk Module:

Option Explicit
'https://aplikasiexcelku.blogspot.com
Function SalinData_dari_WsTerpilih(wShtTujuan As Worksheet, wShtSumber As Worksheet) As Boolean
Dim lRangeTujuanSalinanData As Long, lBarisAkhir As Long, lKolomAkhir As Long
SalinData_dari_WsTerpilih = False
If wShtTujuan Is Nothing Then Exit Function
If wShtSumber Is Nothing Then Exit Function
With wShtTujuan
lRangeTujuanSalinanData = .Range("A" & .Rows.Count).End(xlUp).Row + 1
End With
With wShtSumber
'https://aplikasiexcelku.blogspot.com
If .FilterMode Then .ShowAllData
lBarisAkhir = .Range("A" & .Rows.Count).End(xlUp).Row
lKolomAkhir = .Cells(1, .Columns.Count).End(xlToLeft).Column
.Range(.Cells(2, 1), .Cells(lBarisAkhir, lKolomAkhir)).Copy
wShtTujuan.Range("A" & lRangeTujuanSalinanData).PasteSpecial xlPasteValues
Application.CutCopyMode = False
End With
SalinData_dari_WsTerpilih = True
End Function

Function SalinData_dari_WbTerpilih(wShtTujuan As Worksheet, sDirektoriSumber As String, bFilePertama As Boolean) As Boolean
Dim lGaring As Long, wWrkBookSumber As Workbook, sNamaWbSumber As String, bTerbuka As Boolean
SalinData_dari_WbTerpilih = False
'https://aplikasiexcelku.blogspot.com
If wShtTujuan Is Nothing Then Exit Function
If Len(sDirektoriSumber) < 5 Then Exit Function
lGaring = InStrRev(sDirektoriSumber, Application.PathSeparator)
If lGaring = 0 Then Exit Function
sNamaWbSumber = Mid(sDirektoriSumber, lGaring + 1)
bTerbuka = True
On Error Resume Next
Set wWrkBookSumber = Workbooks(sNamaWbSumber)
If wWrkBookSumber Is Nothing Then
bTerbuka = False
Set wWrkBookSumber = Workbooks.Open(sDirektoriSumber, False, True)
End If
'https://aplikasiexcelku.blogspot.com
On Error GoTo 0
If Not wWrkBookSumber Is Nothing Then
lGaring = 0
With wWrkBookSumber
If SalinData_dari_WsTerpilih(wShtTujuan, Worksheets(1)) Then
lGaring = lGaring + 1
End If
SalinData_dari_WbTerpilih = lGaring > 0
If Not bTerbuka Then
.Close False
End If
End With
'https://aplikasiexcelku.blogspot.com
Set wWrkBookSumber = Nothing
End If
Application.StatusBar = False
End Function

Sub SalinData(wShtTujuan As Worksheet, vWrkBookSumberData As Variant)
Dim lBanyaknyaFile As Long
With Application
.ScreenUpdating = False
.Cursor = xlWait
End With
If IsArray(vWrkBookSumberData) Then
For lBanyaknyaFile = LBound(vWrkBookSumberData) To UBound(vWrkBookSumberData)
Call SalinData_dari_WbTerpilih(wShtTujuan, CStr(vWrkBookSumberData(lBanyaknyaFile)), lBanyaknyaFile = LBound(vWrkBookSumberData))
Next lBanyaknyaFile
Else
'https://aplikasiexcelku.blogspot.com
Call SalinData_dari_WbTerpilih(wShtTujuan, CStr(vWrkBookSumberData), True)
End If
With wShtTujuan
.Parent.Activate
.Activate
.Range("A2").Select
End With
With Application
.StatusBar = False
.Cursor = xlDefault
.ScreenUpdating = True
End With
'https://aplikasiexcelku.blogspot.com
End Sub

Sub CariDataImport()
Dim vWrkBookSumberData As Variant
'https://aplikasiexcelku.blogspot.com
vWrkBookSumberData = "*.xls;*.xlx;*.xlsm (*.xls*),*.xls*"
vWrkBookSumberData = Application.GetOpenFilename(vWrkBookSumberData, 1, "Pilih File Sumber >>", , True)
If Not IsArray(vWrkBookSumberData) Then Exit Sub
FrmImport.Path = vWrkBookSumberData(1)
End Sub

Sub ProsesImport()
Dim vWrkBookSumberData As Variant
Set vWrkBookSumberData = FrmImport.Path
'https://aplikasiexcelku.blogspot.com
SalinData ThisWorkbook.Sheets("SISWA"), vWrkBookSumberData
MsgBox "Proses Import Data Berhasil...", vbInformation, " Aplikasi Excelku"
Unload FrmImport
End Sub

Kode/Script Macro Untuk Userform:

Private Sub UserForm_Initialize()
'https://aplikasiexcelku.blogspot.com
Me.Path.SetFocus
End Sub

Private Sub CmdCari_Click()
'https://aplikasiexcelku.blogspot.com
Call CariDataImport
End Sub

Private Sub CmdImport_Click()
'https://aplikasiexcelku.blogspot.com
If Me.Path = "" Then
MsgBox ("INFO :" & Chr(13) & _
"Tentukan Lokasi File Sumber Dulu!!!"), vbInformation, " Aplikasi Excelku"
Me.Path.SetFocus
Exit Sub
End If
Call ProsesImport
End Sub

Private Sub CmdCancel_Click()
'https://aplikasiexcelku.blogspot.com
If MsgBox("KONFIRMASI :" & Chr(13) & _
    "Yakin Ingin Membatalkan Import Data Siswa???", vbExclamation + vbYesNo, " Aplikasi Excelku") = vbYes Then
    Unload Me
        Else
        Me.Path.SetFocus
        Exit Sub
End If
End Sub

Jika semuanya sudah jangan lupa simpan dokumen ini dalam format *xlsm (Excel Macro-Enabled Workbook). Pada contoh ini Saya menyimpannya dengan nama Import _Data

4. Selanjutnya adalah membuat dokumen baru yang nantinya akan kita jadikan file/workbook tempat kita mengambil data. Untuk lokasi data yang akan kita ambil nanti Saya letakkan di Sheet1 juga, kemudian Saya mengubah nama Sheet1 tersebut menjadi Import, selanjutnya Saya juga membuat deret data (tabel) sama persis seperti pada dokumen/file yang pertama tadi, perhatikan gambar di bawah ini:

Mengambil (Import) Data Dari Workbook Lain Menggunakan Macro VBA Excel

Simpan dokumen, pada contoh ini Saya menyimpannya dengan nama Import dalam format excel biasa (*.xlsx), jika sudah untuk menguji cobanya kita isikan data di file/workbook seperti pada contoh ini :

Mengambil (Import) Data Dari Workbook Lain Menggunakan Macro VBA Excel

Simpan dan tutup. Kemudian buka file pertama yang berisi Userform dan jalankan Userform.
NB: Untuk file templatenya bisa diunduh melalui link diakhir artikel ini.
Jika semua dilakukan denganbenar/sesuai dengan apa yang Saya tuliskan di atas, maka hasilnya seperti pada video di bawah ini :


Demikian artikel mengenai Mengambil (Import) Data Dari Workbook Lain Menggunakan Macro VBA Excel, mudah-mudahan apa yang sudah Saya sampaikan pada kesempatan ini bisa bermanfaat untuk kita semuanya. Terimakasih, dan Salam Belajar!!!

Post a Comment for "Mengambil (Import) Data Dari Workbook Lain Menggunakan Macro VBA Excel"