Bagaimana cara melindungi buku kerja dengan vba?
Untuk memproteksi buku kerja, Anda harus menggunakan metode PROTECT dari VBA. Dengan menggunakan metode ini, Anda bisa menggunakan kata sandi atau bahkan mengaktifkan perlindungan buku kerja tanpa kata sandi. Namun ada satu hal yang perlu anda perhatikan untuk password yang anda gunakan, yaitu CASE SENSITIF.
Workbook.Protect "Password"
- Tentukan buku kerja yang ingin Anda proteksi.
- Ketuk dan arahkan dan pilih metode perlindungan dari daftar atau Anda dapat mengetuk “Lindungi”.
- Masukkan kata sandi yang ingin Anda atur.
- Jalankan kode untuk melindungi buku kerja.
Dalam tutorial ini, kita akan mempelajari metode ini dengan berbagai cara dan juga mempelajari cara membuka proteksi buku kerja.
Tautan yang berguna: Jalankan makro – Perekam makro – Editor Visual Basic – Buku Pegangan Makro Pribadi
Lindungi buku kerja dengan kata sandi
Di bawah ini adalah kode yang perlu Anda gunakan untuk melindungi buku kerja dengan kata sandi. Dalam kode ini, pertama-tama Anda memiliki nama buku kerja dan metode proteksi kata sandi.
Workbooks("Book1").Protect "test123"
Dan ketika saya menjalankan kode ini, itu mengunci buku kerja “Book1”.
Lindungi buku kerja tanpa kata sandi
Dan jika Anda ingin memproteksi buku kerja tanpa kata sandi, sebaiknya abaikan argumen “Kata Sandi”, seperti kode berikut.
Workbooks("Book1").Protect
Jika Anda mencoba memproteksi buku kerja tanpa kata sandi yang sudah dilindungi kata sandi, Excel akan menampilkan kotak dialog untuk memasukkan kata sandi tersebut.
Buka proteksi buku kerja dengan kata sandi
Dengan cara yang sama, Anda bisa menggunakan metode unprotect untuk membuka proteksi buku kerja dan kodenya akan terlihat seperti di bawah ini.
Workbooks("Book1").Unprotect "test123"
Ada satu hal yang perlu Anda perhatikan jika Anda mencoba membuka proteksi buku kerja yaitu w
Buka proteksi buku kerja tanpa kata sandi
Dan jika buku kerja diproteksi tanpa kata sandi, Anda bisa menggunakan metode yang sama tanpa menentukan argumen kata sandi.
Lindungi semua buku kerja yang terbuka
Pada kode di bawah ini, kita memiliki perulangan FOR EACH untuk mengulang semua buku kerja yang terbuka dan memproteksi setiap buku kerja satu per satu menggunakan metode perlindungan yang sama.
'variable to use as a workbook Dim wb As Workbook 'loop through all the open workbooks For Each wb In Application.Workbooks 'condition to check workbook name If wb.Name <> "PERSONAL.XLSB" Then 'protect every workbook with a password wb.Protect "test123" End If Next wb End Sub
Karena saya menggunakan buku kerja makro pribadi, saya menggunakan pernyataan IF THEN ELSE untuk mengabaikan jika nama buku kerja adalah ” personal.xlsb “. Pastikan juga Anda menjaganya.
Lindungi buku kerja yang tertutup
Anda juga dapat memproteksi dan membuka proteksi buku kerja tertutup yang disimpan ke suatu lokasi. Lihatlah kode berikut di mana saya menggunakan lokasi desktop saya untuk menggunakan file “test.xlsx”.
Sub vba_protect_workbook() 'declare varibale to use for the workbook Dim wb As Workbook 'open the workbook that you want to protect Set wb = Workbooks.Open("C:UsersDellDesktoptest.xlsx") 'turn off the screen-updating to _ done everything in the backend Application.ScreenUpdating = False 'protect the workbook wb.Protect 'close the workbook after protecting wb.Close SaveChanges = True 'turn off the screen-updating Application.ScreenUpdating = True End Sub
Kode di atas menggunakan metode Workbook.Open untuk membuka buku kerja yang ingin Anda lindungi, lalu nonaktifkan pembaruan layar agar berfungsi di backend.
Lindungi semua buku kerja yang tertutup dalam satu folder
Kode berikut mengulangi semua buku kerja yang ada di folder yang Anda tentukan sebagai jalurnya. Lalu buka setiap binder, lindungi dan tutup satu per satu.
Sub vba_protect_all_the_workbooks() 'declare variables Dim wb As Workbook Dim myPath As String Dim myFile As String Dim myExtension As String Dim FldrPicker As FileDialog 'optimize macro Application.ScreenUpdating = False Application.EnableEvents = False Application.Calculation = xlCalculationManual 'specify the folder where workbooks are saved myPath = "C:UsersDellDesktopfolder" 'jump to reset setting if there's an error On Error GoTo ResetSettings 'target file fxtension (must include wildcard "*") myExtension = "*.xls*" 'target path myFile = Dir(myPath & myExtension) 'Loop through each Excel file in folder Do While myFile <> "" 'Set variable equal to opened workbook Set wb = Workbooks.Open(Filename:=myPath & myFile) 'protect workbook wb.Protect 'Save and Close Workbook wb.Close SaveChanges:=True 'Get next file name myFile = Dir Loop 'Message Box when task is completed MsgBox "Done!" 'reset setting that were change for optimization ResetSettings: Application.EnableEvents = True Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub