كيفية حماية مصنف مع vba؟

لحماية مصنف، يجب عليك استخدام أسلوب PROTECT الخاص بـ VBA. باستخدام هذه الطريقة، يمكنك استخدام كلمة مرور أو حتى تمكين حماية المصنف بدون كلمة مرور. ولكن هناك شيء واحد عليك مراعاته بالنسبة لكلمة المرور التي تستخدمها، وهو أنها حساسة لحالة الأحرف.

 Workbook.Protect "Password"
  1. حدد المصنف الذي تريد حمايته.
  2. انقر وأشر وحدد طريقة الحماية من القائمة أو يمكنك النقر فوق “حماية”.
  3. أدخل كلمة المرور التي تريد تعيينها.
  4. قم بتشغيل التعليمات البرمجية لحماية المصنف.

في هذا البرنامج التعليمي، سوف نتعلم هذه الطريقة بطرق مختلفة ونتعلم أيضًا كيفية إلغاء حماية المصنف.

روابط مفيدة: تشغيل ماكرومسجل الماكرو – محرر Visual Basic – دليل وحدات الماكرو الشخصية

حماية المصنف بكلمة مرور

يوجد أدناه الرمز الذي تحتاج إلى استخدامه لحماية المصنف بكلمة مرور. في هذا الرمز، لديك أولاً اسم المصنف وطريقة الحماية بكلمة مرور.

 Workbooks("Book1").Protect "test123"

وعندما أقوم بتشغيل هذا الرمز، فإنه يقوم بتأمين المصنف “Book1”.

يقوم بتأمين المجلد book1

حماية مصنف بدون كلمة مرور

وإذا كنت تريد حماية مصنف بدون كلمة مرور، فيجب عليك تجاهل وسيطة “كلمة المرور”، تمامًا مثل التعليمة البرمجية التالية.

 Workbooks("Book1").Protect

إذا حاولت حماية مصنف بدون كلمة مرور ومحمي بكلمة مرور بالفعل، فسيعرض Excel مربع حوار لإدخال كلمة المرور هذه.

قم بإلغاء حماية المصنف بكلمة مرور

بنفس الطريقة، يمكنك استخدام طريقة إلغاء الحماية لإلغاء حماية المصنف وسيبدو الكود الخاص به كما هو موضح أدناه.

 Workbooks("Book1").Unprotect "test123"

هناك شيء واحد يجب عليك الاهتمام به إذا كنت تحاول إلغاء حماية مصنف موجود

إلغاء حماية مصنف بدون كلمة مرور

وإذا كان المصنف محميًا بدون كلمة مرور، فيمكنك استخدام نفس الطريقة دون تحديد وسيطة كلمة المرور.

حماية كافة المصنفات المفتوحة

في الكود أدناه، لدينا حلقة FOR EACH للتنقل عبر كافة المصنفات المفتوحة وحماية كل مصنف واحدًا تلو الآخر باستخدام نفس أسلوب الحماية.

 '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

وبما أنني أستخدم مصنف الماكرو الشخصي، فقد استخدمت عبارة IF THEN ELSE لتجاهل ما إذا كان اسم المصنف هو ” personal.xlsb “. تأكد أيضًا من الاعتناء بها.

حماية مصنف مغلق

يمكنك أيضًا حماية مصنف مغلق محفوظ في موقع ما وإلغاء حمايته. انظر إلى الكود التالي حيث استخدمت موقع سطح المكتب الخاص بي لاستخدام ملف “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

استخدم الكود أعلاه طريقة Workbook.Open لفتح المصنف الذي تريد حمايته، ثم قم بتعطيل تحديث الشاشة للعمل في الواجهة الخلفية.

حماية كافة المصنفات المغلقة في مجلد

يتكرر التعليمة البرمجية التالية عبر كافة المصنفات الموجودة في المجلد الذي حددته كمسار. ثم افتح كل ملف، وقم بحمايته وأغلقه واحدًا تلو الآخر.

 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
ما هو فبا

الدروس ذات الصلة

اضف تعليق

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *