Cara Import File CSV ke ActiveSheet Excel dengan VBA

File CSV atau Comma Separated Values adalah suatu Format data dalam basis data dimana sesuai namanya setiap record dipisahkan dengan Comma (,) atau titik koma (;) atau dalam terjemahan Bahasa Indonesia adalah Nilai berbatas Koma. File CSV sangat banyak digunakan untuk bertukar data antar Aplikasi. karena format file CSV ini sangat sederhana dan sangat mudah dibuka dengan aplikasi Text Editor seperti Notepad, Wordpad atau bahkan dengan Aplikasi Spereadsheet seperti Excel, Google Sheet atau LibreOffice.

Jika kita buka File CSV ini, struktur File yang dimiliki sangat sederhana. Setiap data dipisahkan dengan Koma, misalkan kita memiliki data no, nama, alamat, nomot telepon. setiap Field dipisahkan dengan koma. Kesederhaan ini lah yang menjadi Fitur dari File CSV dimana dengan data seperti itu memudahkan untuk di Import ke program lain.

Import File CSV ke Excel dengan VBA

Untuk melakukan Import File CSV ke Sheet yang aktive di Excel, ExcelNoob akan memberikan 2 Cara. Yang pertama adalah dengan cara lama menggunakan Open [file path] For Input As [number] dengan cara seperti ini, import lebih lambat dan sangat rawan kesalahan. Tetapi mempunyai kelebihan tidak membutuhkan Preference. Untuk melakukan Import CSV silahkan Copy script dibawah ini.

Sub ImportData()
Rem Auth : ExcelNoob
Dim textLine As String
Dim fields() As String
Dim startRow As Integer
Dim sheet As Worksheet

Set sheet = ActiveSheet
startRow = 1
Open "C:\Lokasi\File\CSV\file.csv" For Input As #1
Do While Not EOF(1)
    Line Input #1, textLine
    fields = Split(textLine, ";")
    sheet.Cells(startRow, 1).Value = fields(0)
    sheet.Cells(startRow, 2).Value = fields(1)
    sheet.Cells(startRow, 3).Value = fields(2)
    startRow = startRow + 1
Loop
Close #1
End Sub

Untuk Cara ke 2, import CSV menggunakan Preference File System Object (FSO). Ada beberapa kelebihan dengan menggunakan cara ini. untuk script bisa di copy dibawah ini.

Sub ImportDataCSV2()
Rem Auth : Excelnoob.com
Dim fso As Object
Dim textLine As String
Dim sFilename as String
Dim fields() As String
Dim startRow As Integer
Dim sheet As Worksheet

Set sheet = ActiveSheet
startRow = 1
sFilename = "C:\Lokasi\File\CSV\file.csv"
Set fso = CreateObject("Scripting.FileSystemObject")
With fso
    With .OpenTextFile(sFilename, 1)
        Do Until .AtEndOfStream
            fields = Split(.ReadLine, ";")
            sheet.Cells(startRow, 1).Value = fields(0)
            sheet.Cells(startRow, 2).Value = fields(1)
            sheet.Cells(startRow, 3).Value = fields(2)
            startRow = startRow + 1
        Loop
    End With
End With
End Sub

Pada Cara kedua ini lebih mudah jika ingin melewatan baris yang akan di Import. Misalnya, tidak ingin menginput Baris pertama File CSV dimana Baris pertama ini biasanya Judul. caranya cukup tambahkan

If Not .AtEndOfStream Then .SkipLine

Sebelum Do Until

Lokasi File Dinamis dengan Open Dialog

Kedua Script diatas menggunakan lokasi File CSV yang statis, artinya ketika kita ingin melakukan perubahan lokasi File yang akan di Import, kita harus melakukan perubahan secara langsung pada Kode nya (Hard Coding). Agar hal ini tidak terjadi, kita bisa menggunakan Lokasi File yang dinamis dengan menggunkan Open Dialog. Script yang dibutukan adalah dengan mengganti variable file dengan File Open Dialog seperti dibawah ini.

Set xFile = Application.FileDialog(msoFileDialogFilePicker)
xFile.AllowMultiSelect = False
Selected = xFile.Show

sFilename = xFile.SelectedItems(1)

Demikian Cara melakukan Import CSV ke dalam Active Sheet menggunakan Excel VBA, Silahkan dikembangkan lebih lanjut agar lebih sesuai dengan Aplikasi yang diharapkan.

Be the first to comment

Leave a Reply

Your email address will not be published.


*