Skip to main content

Bekerja dengan Properti Folder di Access VBA

Folder, sama seperti objek lain pada FileSystemObject, juga mempunyai properti. Untuk melihat properti sebuah folder di Windows Explorer, kita bisa memilih sembarang folder, lalu klik mouse kanan untuk menampilkan menu shortcut dan pilih Properties di menu ini. Cara lainnya,  setelah memilih sembarang folder, kita bisa menekan menu File dan pilih Properties.

Merinci Isi Properti Folder

Untuk mengetahui dan merinci properti sebuah folder dengan menggunakan VBA di Access, kita harus menggunakan objek folder yang merupakan salah satu komponen pada FileSystemObject. Adapun properti yang ada dalam objek folder adalah sebagai berikut:
Properti Deskripsi

Attributes
Atribut pada sebuah folder, bisa berupa Hidden, Read only, Compressed, dan Archive. VBA menampilkan atribut dalam bentuk Bitmap, yaitu berupa angka yang merupakan penjumlahan dari masing-masing atribut. Penjelasan lebih rinci ada di bawah.
DateCreated Tanggal saat folder dibuat.
DateLastAccessed Tanggal saat terakhir kali isi dari folder diakses.
DateLastModified Tanggal saat terakhir kali seorang pengguna memodifikasi folder.
Drive Menunjukan lokasi drive yang diikuti tanda titik dua, tempat sebuah folder itu berada.
Files Berupa array yang berisi file yang berada di sebuah folder. Lihat penjelasannya di bawah.
IsRootFolder Menunjukkan apakah sebuah folder merupakan root folder (misalnya: C:\).  Bernilai True bila folder itu merupakan root folder dan False bila bukan.
Name Nama folder, tidak termasuk informasi path. Contohnya: folder C:\Windows\System32, maka nama foldernya adalah System32.
ParentFolder Nama folder tempat sebuah folder disimpan. Misalnya: Parent Folder untuk folder C:\Windows\System32 adalah C:\Windows, Parent Folder untuk C:\Program Files adalah C:\.
Path Nama path yang ada di sebuah folder misalnya C:\Windows\System32.
ShortName Nama konvensioanl sebuah folder dengan menggunakan format lama sistem operasi MS-DOS, terdiri dari 8 karakter. Contohnya, folder Internet Explorer pada C:\Program Files\Internet Explorer mempunyai nama konvesional INTERN~1 sehingga akan tertulis C:\PROGRA~1\INTERN~1.
ShortPath Nama konvensioanl sebuah path folder dengan menggunakan format lama sistem operasi MS-DOS, terdiri dari 8 karakter. Contohnya, path C:\Program Files\Internet Explorer mempunyai nama konvesional C:\PROGRA~1\INTERN~1.
Size Jumlah ukuran total sebuah folder yang dinyatakan dalam satuan byte, meliputi jumlah total byte dari file yang tersimpan di folder maupun subfolder ini.
SubFolders Menunjukkan jumlah subfolder yang langsung berada di bawah folder. Jumlah subfolder yang berada di dalam subfolder tidak dihitung.
Type
Menunjukkan tipe folder.
Properti Files dan Subfolders berupa array yang disebut koleksi atau sekumpulan file dan subfolder, jadi kita harus menambahkan properti untuk setiap koleksi yang berhubungan dengan Files dan Subforders. Properti untuk koleksi itu misalnya count, item, dan application.

Kode VBA Untuk Merinci Properti Folder

Untuk merinci properti folder, kita bisa menggunakan kode VBA sebagai berikut:
Function aksesPropertiFolder(strFolder As String)
  Dim objFSO, objFolder As Object
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  If Not objFSO.FolderExists(strFolder) Then
   MsgBox "Folder " & strFolder & " tidak ada."
   Exit Function
  End If
  Set objFolder = objFSO.GetFolder(strFolder)

  Debug.Print "Nama Folder: " & objFolder.Name
  Debug.Print "Tanggal Pembuatan: " & objFolder.DateCreated
  Debug.Print "Tanggal dan waktu terakdir di akses: " & objFolder.DateLastAccessed
  Debug.Print "Tgl dan waktu terakhir dimodifikasi: " & objFolder.DateLastModified
  Debug.Print "Drive: " & objFolder.Drive
  Debug.Print "Apakah merupakan root folder: " & objFolder.IsRootFolder
  Debug.Print "Nama Parent folder: " & objFolder.ParentFolder
  Debug.Print "Nama Path: " & objFolder.Path
  Debug.Print "Nama Folder versi MS DOS: " & objFolder.ShortName
  Debug.Print "Nama Path versi MS DOS: " & objFolder.ShortPath
  Debug.Print "Total File di folder ini: " & objFolder.Files.Count
  Debug.Print "SubFolders: " & objFolder.SubFolders.Count
  Debug.Print "Ukuran: " & konversiBytes(objFolder.Size)
  Debug.Print "Tipe: " & objFolder.Type
  Debug.Print "Atribut: " & objFolder.Attributes

  Set objFolder = Nothing
  Set objFSO = Nothing
End Function

Mengetahui Atribut Folder

Bila memilih sebuah folder yang ada di Windows Explorer lalu mengklik mouse kanan dan memilih Properties, maka kita akan mengetahui atribut apa saja yang melekat pada folder itu.  Atribut sebuah folder dapat berupa:
  1. Read-only
  2. Hidden
  3. Ready for archiving
  4. Compressed
FileSystemObject yang ada di Access VBA dapat digunakan untuk merinci attribut folder yang dinyatakan dengan angka. Angka itu adalah sebagai berikut:
Atribut Nilai Deskripsi
Hidden 2 Folder tidak terlihat, kecuali pengaturan "Hidden" dibuat terlihat (visible).
System 4 Folder yang digunakan untuk Sistem Operasi.
Directory 16 Nilai standar yang dibaca melalui FileSystemObject dan dipergunakan di semua folder.
Archive 32 Folder ini digunakan oleh program backup untuk menentukan folder dan file yang perlu dibackup.
Compressed 2048 Folder ini telah melalui proses kompresi yang dilakukan Windows OS.
Walau terlihat sederhana, nilai atribut folder yang ditampilkan melalui FileSystemObject tidak seperti itu. Bila kita mencoba menampilkan atribut sebuah folder, nilainya mungkin 20, 48, dan sebagainya yang tidak ada dalam tabel di atas. Nilai yang diperoleh dari FileSystemObject dinyatakan dalam bitmap. Bitmap bukan merupakan format gambar seperti bitmap image, tetapi merupakan cara bagaimana data disimpan dan ditampilkan.
Gambar 1. Atribut folder TesFolder bernilai 18, jumlah total dari nilai Read Only dan Hidden.
Pada Gambar 1, folder TesFolder1 mempunyai properti Attributes Read Only dan Hidden. Saat kita menjalankan fungsi aksesPropertiFolder untuk TesFolder1, maka Attributes mempunyai nilai 18. Nilai ini adalah jumlah dari Hidden (=2) dan Directory untuk Read Only (=16)

Bila atribut Folder is ready for archiving juga diberi tanda centang, seperti tampak pada gambar di bawah, maka fungsi aksesPropertiFolder untuk TesFolder1 akan memberikan hasil sama dengan 50. Hasil ini merupakan penjumlahan nilai dari Hidden (=2), Directory untuk Read Only (=16), dan Archive (=32).
Gambar 2 Tambahan atribut Folder is ready for archiving
Bitmap dirancang sedemikian rupa sehingga hanya ada satu hasil untuk menyatakan satu atau lebih dari nilai atribut. Berbagai macam kombinasi atribut seperti tertera pada tabel tak akan pernah menghasilkan nilai yang sama. Sebagai contoh, nilai 18 dan 50 pada atribut TesFolder1 di atas pasti berasal dari atribut yang berbeda-beda.

Untuk menentukkan atribut yang melekat pada sebuah folder, FileSystemObject dapat memberitahu kita rincian dari setiap atribut yang mungkin dari sebuah folder, caranya adalah sebagai berikut:

Untuk menentukan sebuah folder yang mempunyai atribut Hidden, maka kode VBA FileSyetemObject adalah:
If objFolder.Attributes AND 2 Then
  Debug.Print "Folder disembunyikan"
End If

Secara lengkap, kode VBA untuk menampilkan Attributes folder adalah sebagai berikut (dalam contoh ini menggunakan folder TesFolder1):.
Function atributFolder(strFolder As String)
  Dim objFSO, objFolder As Object
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  If Not objFSO.FolderExists(strFolder) Then
   MsgBox "Folder " & strFolder & " tidak ada."
   Exit Function
  End If
  Set objFolder = objFSO.GetFolder(strFolder)
  If objFolder.Attributes And 2 Then
    Debug.Print "Hidden"
  End If
  If objFolder.Attributes And 4 Then
    Debug.Print "System"
  End If
  If objFolder.Attributes And 16 Then
    Debug.Print "Read Only"
  End If
  If objFolder.Attributes And 32 Then
    Debug.Print "Folder is ready for archiving"
  End If
  If objFolder.Attributes And 2048 Then
    Debug.Print "Compress contents to save disk space"
  End If
  Set objFolder = Nothing
  Set objFSO = Nothing
End Function

Bila fungsi dijalankan, hasilnya tampak seperti gambar di bawah ini.
Gambar 3. Konversi atribut dari Bitmap ke teks yang mudah dipahami

Mengetahui Properti Files dan Subfolders dari Sebuah Folder

Properti files dari sebuah folder berisi sekumpulan file yang tersimpan dalam folder itu. Kita dapat merinci maupun menghitung total jumlah file yang ada dalam folder itu. Berikut ini adalah kode yang diperlukan untuk merinci dan menghitung total file dalam sebuah folder dengan menggunakan Access VBA dan FileSystemObject.
Function propertiFilesFolder(strFolder As String)
  Dim objFSO, objFolder, objFile As Object
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  If Not objFSO.FolderExists(strFolder) Then
   MsgBox "Folder " & strFolder & " tidak ada."
   Exit Function
  End If
  Set objFolder = objFSO.GetFolder(strFolder)
  Debug.Print "Total File di folder ini: " & objFolder.Files.Count
  For Each objFile In objFolder.Files
    Debug.Print vbTab & objFile.Name
  Next
  Set objFolder = Nothing
  Set objFSO = Nothing
End Function

Cara yang sama dapat kita gunakan untuk merinci properti subfolders. Berikut ini adalah caranya:
Function propertiSubFolder(strFolder As String)
  Dim objFSO, objFolder, objSubFolder As Object
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  If Not objFSO.FolderExists(strFolder) Then
   MsgBox "Folder " & strFolder & " tidak ada."
   Exit Function
  End If
  Set objFolder = objFSO.GetFolder(strFolder)
  Debug.Print "Total subfolder di folder ini: " & objFolder.SubFolders.Count
  For Each objSubFolder In objFolder.SubFolders
    Debug.Print vbTab & objSubFolder.Name
  Next

  Set objFolder = Nothing
  Set objFSO = Nothing
End Function

Comments

Post a Comment

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Relasi Database

Menampilkan Data MySQL dalam Form di Access