Banyak cara yang bisa dilakukan untuk mengamankan file. Salah satunya adalah dengan protect Sheet. Melakukan proteksi pada worksheets dilakukan untuk menjaga bagian pada sheet agar tidak diubah sembarangan. Tapi, bagaimana jika Protect Sheet ini digabung dalam Macro VBA?
Dalam keadaan Sheet ter-Protect kemudian menjalankan VBA macro seperti biasanya, misalnya seperti mengisi cell atau mengubah warna cell akan memunculkan masalah baru yaitu Run-time Error ‘1004’ The Cell or Chart you’re trying is on protected sheet.

Pesan Error diatas kurang lebih menginformasikan tidak bisa mengEdit Cell dalam keadaan Terproteksi.
Tentu saja tidak menjadi efisien jika harus unprotect sheet secara manual kemudian menjalan macro dan setelah selesai di protect kembali.
Agar proses ini tidak dilakukan secara manual, maka kita bisa melakukan protect dan unprotect melalui script VBA. sintaksis dari protect adalah
expression.Protect (Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly, AllowFormattingCells, AllowFormattingColumns, AllowFormattingRows, AllowInsertingColumns, AllowInsertingRows, AllowInsertingHyperlinks, AllowDeletingColumns, AllowDeletingRows, AllowSorting, AllowFiltering, AllowUsingPivotTables)
Yang ada di dalam kurung sipatnya optional, boleh digunakan dan boleh juga tidak, jika tidak diisi maka akan menggunakan Nilai Default. Pada contoh kali ini yang akan digunakan hanya bagian Password saja.
Script macro yang digunakan dalam sheet yang terprotect bisa diubah menjadi seperti dibawah ini.
Sub NamaSub() 'Buka protect Sheet1.Unprotect "Password" '------------ 'Script Sebelumnya disini '------------- 'protect Kembali Sheet1.Protect "Password" End Sub
Untuk menjalan macro dalam keadaan terprotect yang dilakukan pada script diatas adalah membuka protect terlebih dahulu sebelum menjalankan script yang lainnya kemudian pada akhir proses dilakukan protect kembali sesuai dengan password yang diisikan.
Sebagai contoh, sebuah script untuk mengisi cell A2 dengan “Apel” dalam keadaan yang Terprotect dengan Password Sheet 123PasswordSaya
. maka scriptnya bisa dibuat seperti dibawah ini.
Sub IsiA2() Dim Pass as String Pass = "123PasswordSaya" With Sheet1 .Unprotect Pass .Range("A2").value = "Apel" .Protect Pass End With End Sub
Bagaimana jika Sheet yang di protect banyak atau Banyak sub macro yang akan dijalankan pada sheet yang terprotect tersebut. Tentu cara diatas menjadi kurang efektif. Misalkan jika password untuk protect sheet akan diubah maka harus mengubah semuanya.
Untuk itu bisa juga VBA protect sheet ini di disimpan kedalam sebuah fungsi. Contoh membuka protect menggunakan fungsi yang dibuat oleh Excelnoob bisa dilihat dibawah ini.
Function Kunci(Sht As Worksheet, Status As Boolean) Dim Pass as String Pass = "123PasswordSaya" If Status Then Sht.Protect Pass Else Sht.Unprotect Pass End If End Function
Untuk pengunaannya cukup mudah, cukup seperti ini
Sub NamaSub() 'Buka protect Kunci Sheet1, False '------------ 'Script Sebelumnya disini '------------- 'protect Kembali Kunci Sheet1, True End Sub
Kelebihannya semua passwordnya terpusat, ketika ada perubahan password cukup ubah dibagian kunci saja.
Leave a Reply