Skip to main content

Membaca File Teks di Access VBA

Membaca data dari sebuah file teks merupakan prosedur yang umum dilakukan saat menjalankan sebuah program. Pada berbagai macam aplikasi, kita sering menemukan jenis file teks yang berisi parameter-parameter tertentu yang dijalankan saat program pertama kali dibuka. File teks itu, biasanya berekstensi .ini, seperti system.ini, properties.ini, dan php.ini berisi configurasi sebuah aplikasi. Kita bisa membaca file teks semacam itu dengan menggunakan FileSystemObject (FSO) yang ada di Access VBA.

Kita mungkin akan menggunakan file teks untuk:
  • Membaca argumen yang ada di dalam baris perintah. Sebagai contoh, sebuah file teks mungkin berisi sejumlah daftar komputer, dengan kode program yang dirancang untuk membaca daftar itu dan kemudian dijalankan ke masing-masing komputer yang ada dalam daftar.
  • Membuat program untuk mencari sebuah file log dengan kondisi tertentu. Sebagai contoh, mencari sebuah file log yang mempunyai tanda "Error".
  • Menambahkan isi dari sebuah file teks ke dalam database. Sebagai contoh, file teks dengan pemisah koma (comma separated text file) biasanya berisi semacam tabel yang masing-masing kolom dipisahkan dengan tanda koma. File teks semacam ini umum digunakan untuk mengimpor data ke dalam sebuah tabel tertentu dalam database.

FSO dapat digunakan untuk membaca isi dari sebuah file teks dengan kondisi berikut ini:
  • FSO hanya bisa membaca file teks ASCII. Kita tidak bisa membaca file dengan format Unicode atau biner, seperti MS Word dan Excel.
  • Cara membaca file teks dengan menggunakan FSO dilakukan satu arah: dari awal sampai dengan akhir dari file teks. Pembacaan dilakukan baris demi baris. Jika ingin kembali ke baris yang diinginkan dan berada di baris sebelumnya, maka kita harus memulai dari awal file sampai ketemu baris yang diinginkan itu.
  • Kita tidak bisa membuka sebuah file teks dengan menggunakan mode baca (ForReading) dan tulis (ForWriting) secara bersamaan. Jika ingin membaca sebuah file, sementara mode yang digunakan adalah menulis (ForWriting), maka kita akan menerima pesan kesalahan "bad file mode".
Adapun metode yang digunakan untuk membaca file teks dengan menggunakan FSO adalah sebagai berikut:
Metode Deskripsi
Read Membaca sejumlah karakter pertama untuk kemudian berhenti.
ReadLine Membaca satu baris dalam sebuah file teks dan kemudian berhenti.

Jika ingin membaca keseluruhan isi teks secara baris per baris, maka kita menggunakan sebuah loop yang berisi metode ini.
ReadAll Membaca keseluruhan isi file teks dan menyimpannya dalam variabel sementara.
Skip Melompatkan sejumlah karakter untuk kemudian membaca karakter yang tidak dilompati dalam sebuah baris teks.
SkipLine Melompatkan sebuah baris untuk kemudian membaca baris berikutnya.
Berikut ini adalah contoh aplikasi untuk membaca sebuah file teks.

Buatlah sebuah file teks dengan nama sistemPrefs.txt, lalu bukalah file itu. Selanjutnya, copy-lah data berikut ini dan paste ke dalam file sistemPrefs.txt, seperti terlihat pada gambar di atas.
Preference Name,prefCaption,Preference Value
displayUserName,Display user name,-1
folderLocation,folder location,
incomeSummary,Income summary account,999
journalAdjust,Adjustment journal account,AJ
journalClosing,Closing journal account,ZZZ
Setelah itu, buatlah sebuah file database Access di lokasi path tempat membuat file teks sistemPrefs.txt di atas. Lalu, bukalah sebuah modul baru dan gunakanlah fungsi berikut ini untuk membaca file teks sistemPrefs.txt di atas.
Function bacaTeksFile()
  Dim strPathFile, strNamaFile As String
  Dim fso As Object
  Dim oFile As Object
  Const ForReading As Integer = 1

  strNamaFile = "sistemPrefs.txt"
  strPathFile = CurrentProject.Path & "\" & strNamaFile
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set oFile = fso.OpenTextFile(strPathFile, ForReading)
  Debug.Print oFile.Read(4)
  Debug.Print oFile.Skip(5)
  Debug.Print oFile.ReadLine
  Debug.Print oFile.SkipLine
  Debug.Print oFile.ReadLine
  Debug.Print oFile.ReadAll
  oFile.Close
  Set fso = Nothing
  Set oFile = Nothing
End Function
Bila fungsi itu dijalankan di Immediate Windows, maka hasilnya adalah sebagai berikut:
?bacaTeksFile
Pref

e Name,prefCaption,Preference Value

folderLocation,folder location,,
incomeSummary,Income summary account,999
journalAdjust,Adjustment journal account,AJ
journalClosing,Closing journal account,ZZZ
Penjelasan fungsi beserta Immediate Window:
  1. Cara membaca file teks sistemPrefs.txt dengan menggunakan FSO dilakukan satu arah: dari awal sampai dengan akhir dari file teks itu. Pembacaan dilakukan baris demi baris.
  2. Aplikasi metode Read pada baris 11 menampilkan karakter "Pref". Karakter "Pref" adalah 4 karakter pertama dari baris pertama yang dibaca dengan menggunakan metode Read.
  3. Selanjutnya, metode Skip pada baris 12 melompatkan 5 karakter setelah karakter "Pref". Karena "Pref" merupakan 4 karakter pertama dari "Preference", maka 5 karakter selanjutnya yang dilompati dalam ("Preference") adalah "erenc".
  4. Metode ReadLine pada baris 13 menampilkan satu baris penuh. Tetapi karena sebagian baris dalam file teks sistemPrefs.txt sudah diproses di baris 11 dan 12 dari fungsi di atas, maka hanya ada sisa baris dalam file teks sistemPrefs.txt yang bisa dibaca, yaitu "e Name,prefCaption,Preference Value".
  5. Metode SkipLine pada baris 14 dari fungsi di atas akan melompatkan baris kedua yang datanya adalah "displayUserName,Display user name,-1 ".
  6. Metode ReadLine pada baris 15 akan menampilkan satu baris penuh data yang ada dala file teks sistemPrefs.txt dan terletak pada baris ke tiga, yaitu "folderLocation,folder location,".
  7. Metode ReadAll pada baris 16 akan menampilkan seluruh isi data dimulai dari baris ke empat (karena baris sebelumnya sudah diproses/ditampilkan melalui metode-metode di baris 11 sampai dengan 15 dari fungsi di atas.

Comments

  1. Tambahkan saja kode VBA untuk memasukkan nilai ke Text Box pada baris di sekitar Debug.Print. Debug.Print pada fungsi di atas menunjukkan bahwa text file sudah bisa dibaca di Access, jadi bisa digunakan untuk menjalankan fungsi lain dalam lingkungan Access.

    ReplyDelete
  2. Di Tools>References sudah di centang librarynya?

    ReplyDelete
  3. MS Office object library, MS scripting runtime dan MS shell control and automation.

    Kamu pakai file contoh dokumen elektronik yg pernah kukirim. Coba, kamu tulis kode di situ saja.

    ReplyDelete
  4. Kalau sudah bisa, tinggal fungsinya ditambah... as Strin,g atau Variant

    ReplyDelete
  5. Saya coba bisa kok.... stelah diubah As String, tinggal cari saja, mana nilai yang ingin dijadikan output lalu tuliskan kode ini:
    bacaTeksFile=.......
    Jika ingin ada kriteria tertentu, tuliskan nilainya dengan pemisah (delimiter, misalnya tanda semicolon, comma, minus, dsb....), lalu saat di dalam fungsi di atas, pisahkan dengan fungsi split yang menunjukkan kriteria tertentu... masukkan dalam persamaan bacaTeksFile=.....

    Bisa ya?

    ReplyDelete
  6. Gak harus keluar. Saya hanya mengubah Function bacaTeksFile() menjadi Function bacaTeksFile() As String.

    Lalu, tambahkan baris
    bacaTeksFile=oFile.ReadLine.
    Kalau fungsi bacaTeksFile belum final, gunakan varibel lain. Setelah itu, bacaTeksFile dipersamakan dng variabel lain.

    Coba... bisa paham nggak?

    ReplyDelete
  7. Pakai loop for next, setiap kali loop ada n=n+1. Nilai n terakhir adalah jumlah recordnya

    ReplyDelete
    Replies
    1. Itu penisah antar baris menggunakan karakter apa ya? Karakter enter, semicolon, atau apa?

      Kalau kamu tahu karakter pemisah, gunakan saja fungsi split untuk diubah jadi array.

      Setelah jadi array, baru pakai loop untuk menghitung jumlah recordnya.

      Delete
    2. Baguslah. Tolong bagikan (share) buku yg kamu beli ke teman2 kamu ya...

      Delete

Post a Comment

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Relasi Database

Menampilkan Data MySQL dalam Form di Access