Skip to main content

Membuat Sendiri FIle Dialog Menggunakan VBA di MS Access

Kita bisa membuat sendiri sebuah FIle Dialog dengan menggunakan VBA di MS Access. File Dialog atau dialog file adalah sebuah kotak yang menampilkan daftar direktori, folder, atau file. Dengan menggunakan daftar ini, pengguna komputer dipersilakan untuk memilih rincian yang ada di dalamnya.


Kita bisa menggunakan file dialog untuk menautkan sebuah folder, memilih beberapa macam file dan menyimpan file. Sebagai contoh, untuk memilih satu atau lebih file Excel, kita bisa menekan menu File, lalau pilih Open. Sebuah kotak file dialog akan terbuka dan kita bisa menyeleksi berbagai macam file Excel yang akan dipilih. Demikian pula saat kita memilih menu File, lalu pilih Save As, maka sebuah kotak file dialog akan terbuka dan kita bisa memilih atau mengetikkan nama file yang baru untuk disimpan.
Gambar 1. Kotak File Dialog untuk memilih folder

Untuk membuat kotak file dialog di VBA, kita menggunakan objek Application.FileDialog. Cara penulisannya adalah sebagai berikut:

Application.FileDialog(tipeFileDialog)

Parameter tipeFileDialog adalah sebuah pilihan dalam daftar msoFileDialogType yang terdiri dari:

Nilai Keterangan
msoFileDialogOpen Kotak dialog untuk membuka file
msoFileDialogSaveAs Kota dialog untuk menyimpan sebuah file
msoFileDialogFilePicker Kotak dialog untuk memilih file
msoFileDialogFolderPicker Kotak dialog untuk memilih folder

Adapun properti dari FileDiaolog adalah sebagai berikut:
Properti Keterangan
AllowMultiSelect Mengarahkan file dialog unuk memilih satu atau lebih file atau folder. Nilai berupa boolean True atau False.
ButtonName Teks yang ditampilkan pada tombol perintah di kotak dialog.
DialogType Mengubah MsoFileDialogType (lihat tabel di atas)
Filter Mengatur filter untuk memilih jenis file yang ingin ditampilkan, misalnya: file yang berekstensi *.docx,  *.doc, *.mdb, *.txt, dan sebagainya.
InitialFileName Nama path saat kotak fIle dialog terbuka. misalnya: C:\
InitialView Bentuk tampilan saat kotak dialog terbuka, nilainya sebagai berikut:
Nilai
msoFileDialogViewDetails
msoFileDialogViewLargeIcons
msoFileDialogViewList
msoFileDialogViewPreview
msoFileDialogViewProperties
msoFileDialogViewSmallIcons
msoFileDialogViewThumbnail
msoFileDialogViewWebView
SelectedItems Collection of type FileDialogSelectedItems with all selected items
Title Judul dari kotak file dialog.
Show Mengarahkan file dialog untuk menampilkan atau membatalkan hasil seleksi file atau folder di kotak file dialog. Nilai berupa boolean True atau False.

Keterkaitan properti dengan kotak dialog dapat dijelaskan pada gambar di bawah ini. Kode yang digunakan dapat dilihat pada contoh di bawah (Contoh File Dialog untuk memilih file image/gambar).
Gambar 2. Kotak File Dialog untuk memilih file beserta keterkaitan dengan properti FileDialog

Contoh File Dialog untuk memilih file image/gambar

Berikut ini adalah kode VBA yang digunakan untuk memilih file gambar:
Function kotakFileDialog (Optional strFileName As String = "", Optional boolAllowMultiSelect As Boolean = False) As String
'Aktifkan Microsoft Office Object Library pada Tools - References... (minimum 12.0).
  Dim fd As Office.FileDialog
  Dim vrtSelectedItem As Variant, itemFile() As String, i As Integer
  
  Set fd = Application.FileDialog(msoFileDialogFilePicker)
  
  With fd
    .AllowMultiSelect = boolAllowMultiSelect
    .InitialView = msoFileDialogViewList
    .Title = "Pilih File Gambar"
    .Filters.Clear
    .Filters.Add "Images", "*.gif; *.jpg; *.jpeg; *.png; *.bmp", 1
    .ButtonName = "Tes pilih file"
    If .Show Then
      If .AllowMultiSelect Then
        ReDim Preserve itemFile(.SelectedItems.Count - 1)
        i = 0
        For Each vrtSelectedItem In .SelectedItems
          itemFile(i) = vrtSelectedItem
          i = i + 1
        Next vrtSelectedItem
        kotakFileDialog = Join(itemFile, ",")
      Else
        kotakFileDialog = .SelectedItems.Item(1)
      End If
    Else
      If strFileName <> "" Then kotakFileDialog = strFileName
    End If
  End With
    
  Set fd = Nothing

End Function

Contoh eksekusi file di Immediate Window dengan mengaktifkan multiple file (AllowMultiSelect):
?kotakFileDialog(,True)
C:\Documents and Settings\User1\My Documents\My Pictures\DSCN3887.JPG,C:\Documents and Settings\User1\My Documents\My Pictures\DSCN3869.JPG,C:\Documents and Settings\User1\My Documents\My Pictures\DSCN3874.JPG,C:\Documents and Settings\User1\My Documents\My Pictures\DSCN3883.JPG
Contoh File Dialog untuk memilih folder

Berikut ini adalah kode VBA yang digunakan untuk memilih folder:
Function membukaFolder(Optional strFileName As String = "") As String
    Dim lngCount As Long
 'Aktifkan Microsoft Office Object Library pada Tools - References... (minimum 12.0).
    With Application.FileDialog(msoFileDialogFolderPicker)
      .Filters.Clear
      .Title = "Membuka folder"
      If .Show Then
        membukaFolder = Trim(.SelectedItems.Item(1))
      Else
        If strFileName <> "" Then membukaFolder = strFileName
      End If
    End With
End Function

Memfilter file dialog


Pengaturan untuk memilih dua file atau lebih dengan menggunakan Application.FileDialog mungkin bisa menimbulkan masalah. Masalah akan timbul bila hasil/output dari Application.FileDialog berisi nama-nama file yang sudah dipilih melalui eksekusi perintah Application.FileDialog sebelumnya. Untuk mencegah masalah seperti ini, maka kita harus mengikutsertakan metode .Filters.Clear sebelum semua pilihan file ditampilkan sebagai output.

Comments

  1. Selamat pagi pak Yanto. Apa ada kursus ms Access? saya ingin memperdalam ms Access, selama ini saya belajar sendiri melalui buku. Terima kasih (Bambang 087775431998)

    ReplyDelete
    Replies
    1. Sementara sih belum, lebih banyak melalui japri/pm. Kalau peminat banyak, akan saya pertimbangkan. Kalau memang P Bambang berminat silakan kirim email, alamat email saya ada di halaman Download File di atas.

      Delete
    2. pak yanto, dengan kasus di atas, kita akan memilih file yang ada dalam folder, kalau misalkan kita memilih folder saja dan nanti akan terpilih semua file yang ada dalam folder maupun subfolder tersebut, yang dirumah di bagian apa ya. terima kasih

      Delete
    3. Pak Hadi, kalau bapak ingin menjalankan operasi tertentu seperti mengcopy, rename, atau delete file pada folder yang diset melalui fungsi membukaFolder bisa menggunakan administrasi sistem dengan FileSystemObject di http://access-terapan.blogspot.co.id/search/label/Administrasi%20Sistem, yang membahas copy, rename, hapus, remove. Fungsi membukaFolder atau kotakFileDialog di atas sebatas untuk menyeleksi nama folder atau file saja, proses selanjutnya ada di tautan link yang saya sebut itu.

      Delete
    4. Pak Hadi juga bisa menambahkan *.* pada folder yang diset melalui fungsi membukaFolder, lalu proses selanjutnya dilakukan di tautan link yang saya sebut di atas.

      Delete
  2. untuk menyembunyikan list driver nya...sehingga yang tampil file ato foldernya.. di file open dialog gimana caranya pak yanto?

    ReplyDelete
    Replies
    1. Kalau khusus untuk pengecualian seperti itu sepertinya nggak ada. Kamu mesti buat dulu daftar dalam bentuk array semua list dengan tidak memasukkan lis drive. Agak panjang buat kodenya, hasil akhirnya nanti bisa mengeksekusi berikut ini:

      .Filters.Add "Images", "*.gif; *.jpg; *.jpeg; *.png; *.bmp; *.dll; *.ocx; dan lain sebagainya", 1

      Semoga membantu

      Delete

Post a Comment

Posting Terpopuler

Format Untuk Field Dengan Tipe Data Number dan Currency di MS Access

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Fungsi Untuk Menghitung Pajak Penghasilan PPh 21 di MS Access