Vba ile çalışma kitabı nasıl korunur?
Bir çalışma kitabını korumak için VBA’nın PROTECT yöntemini kullanmanız gerekir. Bu yöntemi kullanarak bir parola kullanabilir, hatta çalışma kitabı korumasını parola olmadan etkinleştirebilirsiniz. Ancak kullandığınız şifre için dikkat etmeniz gereken bir husus var; o da büyük/küçük harfe duyarlıdır.
Workbook.Protect "Password"
- Korumak istediğiniz çalışma kitabını belirtin.
- Dokunup işaretleyin ve listeden koruma yöntemini seçin veya “Koru”ya dokunabilirsiniz.
- Ayarlamak istediğiniz şifreyi girin.
- Çalışma kitabını korumak için kodu çalıştırın.
Bu derste bu yöntemi farklı şekillerde öğreneceğiz ve ayrıca bir çalışma kitabının korumasını nasıl kaldıracağımızı da öğreneceğiz.
Yararlı bağlantılar: Makro çalıştırma – Makro kaydedici – Visual Basic Düzenleyici – Kişisel Makrolar El Kitabı
Çalışma kitabını parolayla koruma
Bir çalışma kitabını parolayla korumak için kullanmanız gereken kod aşağıdadır. Bu kodda öncelikle çalışma kitabı adı ve parola koruma yöntemi bulunur.
Workbooks("Book1").Protect "test123"
Ve bu kodu çalıştırdığımda “Kitap1” çalışma kitabını kilitliyor.
Çalışma kitabını parola olmadan koruma
Bir çalışma kitabını parola olmadan korumak istiyorsanız, tıpkı aşağıdaki kodda olduğu gibi “Parola” bağımsız değişkenini göz ardı etmelisiniz.
Workbooks("Book1").Protect
Zaten parola korumalı olan parolasız bir çalışma kitabını korumaya çalışırsanız, Excel bu parolayı girmeniz için bir iletişim kutusu görüntüler.
Çalışma kitabının korumasını parolayla kaldırma
Aynı şekilde, çalışma kitabının korumasını kaldırmak için korumayı kaldırma yöntemini kullanabilirsiniz ve bunun kodu aşağıdaki gibi görünecektir.
Workbooks("Book1").Unprotect "test123"
Bir çalışma kitabının korumasını kaldırmaya çalışıyorsanız dikkat etmeniz gereken bir şey var:
Çalışma kitabının korumasını parola olmadan kaldırma
Bir çalışma kitabı parola olmadan korunuyorsa, parola bağımsız değişkenini belirtmeden aynı yöntemi kullanabilirsiniz.
Tüm açık çalışma kitaplarını koruyun
Aşağıdaki kodda, tüm açık çalışma kitaplarında döngü yapmak ve her çalışma kitabını aynı koruma yöntemini kullanarak tek tek korumak için bir FOR EACH döngüsüne sahibiz.
'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
Kişisel makro çalışma kitabını kullandığım için, çalışma kitabı adının ” personal.xlsb ” olup olmadığını yok saymak için IF THEN ELSE ifadesini kullandım. Ayrıca onunla ilgilendiğinizden emin olun.
Kapalı bir çalışma kitabını koruma
Ayrıca bir konuma kaydedilen kapalı bir çalışma kitabını da koruyabilir ve korumasını kaldırabilirsiniz. “Test.xlsx” dosyasını kullanmak için masaüstü konumumu kullandığım aşağıdaki koda bakın.
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
Yukarıdaki kod, korumak istediğiniz çalışma kitabını açmak için Workbook.Open yöntemini kullandı, ardından arka uçta çalışmak için ekran güncellemesini devre dışı bıraktı.
Bir klasördeki tüm kapalı çalışma kitaplarını koruyun
Aşağıdaki kod, yol olarak belirttiğiniz klasördeki tüm çalışma kitapları arasında geçiş yapar. Daha sonra her bir klasörü açın, koruyun ve tek tek kapatın.
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