Bagi kita yang sering menggunakan Windows Explorer tentu sudah tidak asing lagi dengan perintah untuk meng-copy dan paste, memindahkan, menghapus, atau bahkan mengganti nama sebuah folder. Mungkin, tidak banyak orang yang tahu bahwa MS Access juga mempunyai kemampuan seperti itu. Pada posting kali ini, kita akan belajar bagaimana melakukan pengeditan seperti yang kita lakukan dengan Windows Explorer, terutama yang berkaitan dengan editing folder.
Dengan VBA di Access, kita bisa menggunakan metode CopyFolder untuk mengkopi sebuah folder beserta isinya ke tempat lain, sama seperti yang kita lakukan melalui Windows Explorer. Untuk menjalankannya, metode CopyFolder memerlukan dua parameter yang harus ada:
Bila Overwrite bernilai False, maka CopyFolder tidak akan menimpa folder yang ada di folder target. Namun demikian, saat akan mem-paste folder ke target, pesan kesalahan eksekusi (run-time error) akan muncul. Bila run-time error ini muncul, maka CopyFolder akan berhenti. Contohnya seperti ini: Ada 10 folder sumber yang ingin di-copy ke folder target. Folder sumber yang ketiga, sebut saja Mawar, ternyata ada di folder target. Nah, saat folder kedua sudah selesai di-paste ke folder target, dan hendak mem-paste folder Mawar, pesan run-time error akan muncul, dan proses paste berhenti. Tujuh folder yang hendak di-paste juga dibatalkan. Dengan demikian, hanya ada dua folder pertama saja yang berhasil di-paste.
Berikut ini adalah contoh penggunaan metode CopyFile dengan menggunakan FileSystemObject di Access VBA.
Fungsi kopiFolder("D:\TesFolder","D:\TesFolder1") di gambar itu akan meng-copy folder sumber yang bernama TesFolder di directory D:\ ke folder target yang bernama TesFolder1 di directory yang sama. Bila folder strTarget sudah ada, maka kita bisa menimpanya dengan folder baru yang ingin di-copy atau membatalkan metode CopyFolder ini.
Contoh lain, bila di folder target D:\TestFolder1 sudah berisi subfolder atau file seperti tampak pada gambar 2a, sedangkan folder sumber D:\TesFolder sudah berisi file seperti tampak pada gambar 2b, maka dengan menggunakan fungsi kopiFolder("D:\TesFolder","D:\TesFolder1") di atas, isi dari folder target tidak akan hilang atau dihapus. Sebaliknya, isi folder sumber akan ditambahkan ke folder target. Hasilnya akan tampak seperti gambar 2c. Pada gambar 2c itu terdapat dua buah file dari folder sumber D:\TesFolder yang di-copy ke folder target D:\TesFolder1.
Kita memindahkan folder ke tempat lain biasanya untuk mengurangi jumlah memori yang terpakai dalam sebuah media penyimpanan. Sebagai misal, hard disk C yang telah 90% penuh mungin ingin dikurangi file atau folder yang ada di dalamnya, sehingga memori hard disk itu menjadi lebih longgar dan dapat digunakan untuk menyimpan file/folder yang lain, yang mungkin lebih berguna. Untuk memindahkan sebuah folder, kita dapat menggunakan metode MoveFolder.
Metode MoveFolder mempunyai dua parameter:
Sayangnya, MoveFolder mempunyai satu kelemahan. Bila ada gangguan saat proses pemindahan folder dilakukan, maka folder sumber dan target mungkin akan mengalami kerusakan. Bila terjadi kerusakan, maka folder yang dipindahkan tidak dapat diperbaiki atau di-restore ke posisi semula saat MoveFolder belum dijalankan. Oleh karena itu, jalan terbaik untuk memindahkan folder dari satu tempat ke tempat lain adalah dengan menggunakan dua metode. Dua metode itu adalah CopyFolder dan DeleteFolder. CopyFolder dilakukan untuk membuat duplikat dari folder sumber yang ingin dipindahkan ke folder target. Setelah CopyFolder selesai dijalankan, maka DeleteFolder digunakan untuk menghapus folder sumber, sehingga hanya tersisa folder target. Dengan dua metode seperti ini, maka folder yang ingin dipindahkan tidak akan mengalami kerusakan. Jika terjadi sesuatu saat proses pemindahan terjadi, maka folder sumber masih ada dan berfungsi seperti semula.
Berikut ini adalah contoh fungsi memindahkan folder yang dibuat dengan Access VBA menggunakan FileSystemObject:
Pada situasi lain, kita mungkin ingin menghapus sebuah folder yang sudah tidak terpakai lagi, entah karena tidak ada lagi orang memperbaharui folder itu, ingin dipindahkan ke media penyimpanan yang lain (untuk tujuan back-up), atau folder itu menggantung sehingga tidak berguna.
Untuk menghapus sebuah folder, kita bisa menggunakan metode DeleteFolder yang disediakan oleh Access VBA melalui FileSystemObject. Metode DeleteFolder menghapus sebuah folder beserta isinya. Parameter yang diperlukan dalam metode DeleteFolder ini berupa nama path dari folder yang akan dihapus. Contoh berikut ini akan menghapus folder C:\Folder1 beserta seluruh isi dalam folder itu:
Kita dapat menggunakan karakter wildcard berupa tanda asteriks (*) untuk menghapus beberapa folder sekaligus. Sebagai misal, untuk menghapus semua folder yang berawalan dengan huruf A pada C:\Folder1, maka kita bisa menggunakan kode berikut ini:
Berikut ini adalah contoh kode VBA di Access yang digunakan untuk menghapus sebuah folder melalui FileSystemObject:
Meng-copy Folder
Salah satu bagian penting dalam mengelola sistem adalah mengkopi folder dan isinya. Seringkali kita mengkopi folder untuk menyimpannya sebagai back up dan berjaga-jaga jika terjadi masalah dengan data yang tersimpan dalam folder itu. Membuat back up untuk berjaga-jaga bisa dilakukan di folder lain, di hard disk drive yang lain, atau bahkan di dalam sebuah CD/DVD. Selain untuk melakukan back-up data, kita juga meng-copy folder untuk didistribusikan ke komputer yang lain yang mungkin membutuhkan.Dengan VBA di Access, kita bisa menggunakan metode CopyFolder untuk mengkopi sebuah folder beserta isinya ke tempat lain, sama seperti yang kita lakukan melalui Windows Explorer. Untuk menjalankannya, metode CopyFolder memerlukan dua parameter yang harus ada:
- Folder sumber yang akan di-copy. Folder sumber bisa berupa path lokal yang ada dalam komputer (misalnya di D:\TesFolder) atau UNC (misalnya \\Server1\TesFolder).
- Folder target yang akan digunakan untuk menaruh hasil copy-an. Folder target juga bisa berupa path lokal maupun UNC. Jika folder target tidak ada, maka folder itu akan dibuat secara otomatis.
Bila Overwrite bernilai False, maka CopyFolder tidak akan menimpa folder yang ada di folder target. Namun demikian, saat akan mem-paste folder ke target, pesan kesalahan eksekusi (run-time error) akan muncul. Bila run-time error ini muncul, maka CopyFolder akan berhenti. Contohnya seperti ini: Ada 10 folder sumber yang ingin di-copy ke folder target. Folder sumber yang ketiga, sebut saja Mawar, ternyata ada di folder target. Nah, saat folder kedua sudah selesai di-paste ke folder target, dan hendak mem-paste folder Mawar, pesan run-time error akan muncul, dan proses paste berhenti. Tujuh folder yang hendak di-paste juga dibatalkan. Dengan demikian, hanya ada dua folder pertama saja yang berhasil di-paste.
Berikut ini adalah contoh penggunaan metode CopyFile dengan menggunakan FileSystemObject di Access VBA.
Function kopiFolder(strSumber As String, strTarget As String) Dim objFSO, objFolder As Object Set objFSO = CreateObject("Scripting.FileSystemObject") If Not objFSO.FolderExists(strSumber) Then MsgBox "Folder " & strSumber & " tidak ada." Exit Function End If If objFSO.FolderExists(strTarget) Then If MsgBox("Folder " & strTarget & " sudah ada. Apakah anda ingin menggantinya dengan yang baru?", vbYesNo) = vbYes Then objFSO.copyFolder strSumber, strTarget Debug.Print "Folder dikopi ke:" & strTarget Else Exit Function End If Else objFSO.copyFolder strSumber, strTarget, True Debug.Print "Folder dikopi ke:" & strTarget End If Set objFSO = Nothing End FunctionFungsi kopiFolder di atas akan meng-copy folder dari strSumber ke strTarget, seperti tampak pada gamber 1.
Gambar 1. Bagian A adalah VBA Editor dan Immediate WIndows, sedangkan bagian B adalah Windows Explorer |
Fungsi kopiFolder("D:\TesFolder","D:\TesFolder1") di gambar itu akan meng-copy folder sumber yang bernama TesFolder di directory D:\ ke folder target yang bernama TesFolder1 di directory yang sama. Bila folder strTarget sudah ada, maka kita bisa menimpanya dengan folder baru yang ingin di-copy atau membatalkan metode CopyFolder ini.
Gambar 2a. Posisi awal folder D:\TesFolder1 sebelum ada proses CopyFolder |
Gambar 2b. Isi folder D:\TesFolder |
Gambar 2c. Posisi akhir folder D:\TesFolder1 setelah ada proses CopyFolder dari D:\TesFolder |
Contoh lain, bila di folder target D:\TestFolder1 sudah berisi subfolder atau file seperti tampak pada gambar 2a, sedangkan folder sumber D:\TesFolder sudah berisi file seperti tampak pada gambar 2b, maka dengan menggunakan fungsi kopiFolder("D:\TesFolder","D:\TesFolder1") di atas, isi dari folder target tidak akan hilang atau dihapus. Sebaliknya, isi folder sumber akan ditambahkan ke folder target. Hasilnya akan tampak seperti gambar 2c. Pada gambar 2c itu terdapat dua buah file dari folder sumber D:\TesFolder yang di-copy ke folder target D:\TesFolder1.
Memindahkan Sebuah Folder dan Seluruh Isinya
Sesaat setelah meng-copy sebuah folder dari sebuah sumber ke target, maka kita mempunyai duplikat di folder target yang isinya sama persis dengan folder sumber. Itulah gunanya meng-copy. Di lain waktu, kita ingin memindahkan sebuah folder dari satu tempat ke ke tempat lain. Misalnya, memindahkan sebuah folder dari hard disk C ke hard disk D, dari hard disk D ke CD atau mobile disk yang lain. Kita juga bisa memindahkan folder dari hard disk ke komputer lain dalam sebuah jaringan.Kita memindahkan folder ke tempat lain biasanya untuk mengurangi jumlah memori yang terpakai dalam sebuah media penyimpanan. Sebagai misal, hard disk C yang telah 90% penuh mungin ingin dikurangi file atau folder yang ada di dalamnya, sehingga memori hard disk itu menjadi lebih longgar dan dapat digunakan untuk menyimpan file/folder yang lain, yang mungkin lebih berguna. Untuk memindahkan sebuah folder, kita dapat menggunakan metode MoveFolder.
Metode MoveFolder mempunyai dua parameter:
- Folder sumber yang akan dipindahkan. Folder sumber bisa berupa path lokal yang ada dalam komputer (misalnya di D:\TesFolder) atau UNC (misalnya \\Server1\TesFolder).
- Folder target yang akan digunakan untuk menyimpan folder hasil pindahan) Folder target juga bisa berupa path lokal maupun UNC.
Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.MoveFolder "C:\Sumber" , "C:\Target"Pada contoh kode di atas, MoveFolder digunakan untuk memindahkan folder C:\Sumber ke C:\Target.
Sayangnya, MoveFolder mempunyai satu kelemahan. Bila ada gangguan saat proses pemindahan folder dilakukan, maka folder sumber dan target mungkin akan mengalami kerusakan. Bila terjadi kerusakan, maka folder yang dipindahkan tidak dapat diperbaiki atau di-restore ke posisi semula saat MoveFolder belum dijalankan. Oleh karena itu, jalan terbaik untuk memindahkan folder dari satu tempat ke tempat lain adalah dengan menggunakan dua metode. Dua metode itu adalah CopyFolder dan DeleteFolder. CopyFolder dilakukan untuk membuat duplikat dari folder sumber yang ingin dipindahkan ke folder target. Setelah CopyFolder selesai dijalankan, maka DeleteFolder digunakan untuk menghapus folder sumber, sehingga hanya tersisa folder target. Dengan dua metode seperti ini, maka folder yang ingin dipindahkan tidak akan mengalami kerusakan. Jika terjadi sesuatu saat proses pemindahan terjadi, maka folder sumber masih ada dan berfungsi seperti semula.
Berikut ini adalah contoh fungsi memindahkan folder yang dibuat dengan Access VBA menggunakan FileSystemObject:
Function pindahkanFolder(strSumber As String, strTarget As String) Dim objFSO, objFolder As Object Set objFSO = CreateObject("Scripting.FileSystemObject") If Not objFSO.FolderExists(strSumber) Then MsgBox "Folder " & strSumber & " tidak ada." Exit Function End If If objFSO.FolderExists(strTarget) Then MsgBox "Folder " & strTarget & " sudah ada." Exit Function End If objFSO.MoveFolder strSumber, strTarget MsgBox "Folder " & strSumber & " sudah dipindahkan." Set objFSO = Nothing End Function
Mengganti Nama Folder
FileSystemObject tidak mempunyai metode yang khusus digunakan untuk mengganti nama sebuah folder. Untuk mengganti nama sebuah folder, kita bisa menggunakan metode MoveFolder di atas. Misalkan nama folder D:\TestFolder ingin diganti menjadi D:\TestFolder1, maka jalankan fungsi pindahkanFolder di atas seperti di bawah ini:pindahkanFolder("D:\TestFolder" , "D:\TestFolder1")
Menghapus Folder
Pada situasi tertentu, sebuah sistem akan menyimpan temporary file yang berada dalam sebuah folder. Temporary file ini digunakan untuk memudahkan dan mempercepat sebuah program. Saat program itu selesai dijalankan atau ditutup, maka temporary file juga akan dihapus. Bila jumlah temporary file relatif banyak, maka akan lebih mudah bagi programmer untuk membuat semacam folder yang sifatnya juga temporer dan digunakan untuk menyimpan temporary file itu. Bila program tidak dibutuhkan lagi, maka folder temporer itu juga bisa dihapus. Dengan demikian kita bisa menghemat media penyimpanan.Pada situasi lain, kita mungkin ingin menghapus sebuah folder yang sudah tidak terpakai lagi, entah karena tidak ada lagi orang memperbaharui folder itu, ingin dipindahkan ke media penyimpanan yang lain (untuk tujuan back-up), atau folder itu menggantung sehingga tidak berguna.
Untuk menghapus sebuah folder, kita bisa menggunakan metode DeleteFolder yang disediakan oleh Access VBA melalui FileSystemObject. Metode DeleteFolder menghapus sebuah folder beserta isinya. Parameter yang diperlukan dalam metode DeleteFolder ini berupa nama path dari folder yang akan dihapus. Contoh berikut ini akan menghapus folder C:\Folder1 beserta seluruh isi dalam folder itu:
Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.DeleteFolder("C:\Folder1")Metode DeleteFolder menghapus semua folder dan isinya dengan segera, tanpa meminta konfirmasi. Selain itu, metode ini juga tidak akan menaruh folder yang dihapus ke dalam Recylce Bin. Oleh karena itu seorang admin tidak boleh sembarangan menghapus sebuah folder, kecuali folder itu sudah tidak diperlukan.
Kita dapat menggunakan karakter wildcard berupa tanda asteriks (*) untuk menghapus beberapa folder sekaligus. Sebagai misal, untuk menghapus semua folder yang berawalan dengan huruf A pada C:\Folder1, maka kita bisa menggunakan kode berikut ini:
objFSO.DeleteFolder("C:\Folder1\A*")Bila ingin menghapus subfolder yang diawali dengan huruf "Su", maka gunakan kode berikut ini:
objFSO.DeleteFolder("C:\Folder1\Su*")Karakter wildcard ini hanya bisa diikutsertakan di bagian akhir dari parameter nama path. Kita tidak bisa menjalankan metode DeleteFolder yang mempunyai karakter wildcard di tengah parameter nama path seperti berikut ini:
objFSO.DeleteFolder("C:\*\Subfolder1")Bila metode di atas dijalankan, maka akan muncul kesalahan "Path not found".
Berikut ini adalah contoh kode VBA di Access yang digunakan untuk menghapus sebuah folder melalui FileSystemObject:
Function hapusFolder(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 If MsgBox("Bila " & strFolder & " dihapus, folder ini tidak bisa di-restore. Konfirm hapus folder ini?", vbYesNo) = vbYes Then objFSO.DeleteFolder strFolder MsgBox "Folder " & strFolder & " sudah dihapus." End If Set objFSO = Nothing End Function
Comments
Post a Comment