Cara Menjalankan VBA Macro Pada Protect Sheet

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.

VBA Error Sheet Protect

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.

Be the first to comment

Leave a Reply

Your email address will not be published.


*