اکسل به شما این امکان را می دهد که از کاربرگ ها محافظت کرده و از آنها محافظت کنید. البته هدف این است که به دیگران اجازه دهید از ورک بوک شما استفاده کنند، اما نه اینکه سلول های خاصی را در هر کاربرگ تغییر دهید.
از آنجایی که حفاظت در سطح کاربرگ انجام می شود، قدم گذاشتن در هر کاربرگ در یک ورک بوک و محافظت یا عدم محافظت از آنها می تواند دردسر بزرگی باشد. اگر 25 کاربرگ دارید، باید هر کاربرگ را فعال کنید، محافظت یا عدم محافظت را انجام دهید و به صفحه بعدی بروید.
یک روش زمان بر کمتر برای محافظت از هر کاربرگ در یک ورک بوک، استفاده از یک ماکرو برای انجام کار واقعی است. ماکرو زیر این کار را انجام می دهد:
Sub ProtectAllSheets()
Dim ws As Worksheet
Dim sOrigSheet As String
Dim sOrigCell As String
Application.ScreenUpdating = False
sOrigSheet = ActiveSheet.Name
sOrigCell = ActiveCell.Address
For Each ws In Worksheets
ws.Select
ws.Protect Password:="Password"
Next ws
Application.GoTo Reference:=Worksheets("" _
& sOrigSheet & "").Range("" & sOrigCell & "")
Application.ScreenUpdating = True
End Sub
ماکرو برای حذف محافظت از همه کاربرگ ها فقط کمی متفاوت است:
Sub UnProtectAllSheets()
Dim ws As Worksheet
Dim sOrigSheet As String
Dim sOrigCell As String
Application.ScreenUpdating = False
sOrigSheet = ActiveSheet.Name
sOrigCell = ActiveCell.Address
For Each ws In Worksheets
ws.Select
ws.Unprotect Password:="Password"
Next ws
Application.GoTo Reference:=Worksheets("" _
& sOrigSheet & "").Range("" & sOrigCell & "")
Application.ScreenUpdating = True
End Sub
در حالی که این ماکروها به خوبی کار خواهند کرد، چند اخطار وجود دارد. ابتدا باید مطمئن شوید که متغیر Password در هر ماکرو روی کلمه عبور مناسب برای کاربرگ های شما تنظیم شده است. (البته فرض بر این است که همه کاربرگ ها از رمزهای عبور یکسانی استفاده می کنند.) هشدار دوم این است که از آنجایی که ماکرو باید رمز عبور را داشته باشد، امنیت کلی ورک بوک شما ممکن است به خطر بیفتد - هر کسی که بتواند ماکروها را نمایش دهد می داند چه چیزی رمزهای عبور برای کتاب های کاری شما هستند.
به عنوان راه حلی برای این مشکل آخر، می توانید ماکروها را طوری تغییر دهید که از آنها رمز عبور بخواهند تا در کار خود استفاده کنند. نسخه زیر نسخه ای از ماکرو است که از کاربرگ ها محافظت می کند:
Sub ProtectAllSheetsPass()
Dim ws As Worksheet
Dim sOrigSheet As String
Dim sOrigCell As String
Dim sPWord As String
Application.ScreenUpdating = False
sOrigSheet = ActiveSheet.Name
sOrigCell = ActiveCell.Address
sPWord = InputBox("What password?", "Protect All")
If sPWord > "" Then
For Each ws In Worksheets
ws.Select
ws.Protect Password:=sPWord
Next ws
End If
Application.GoTo Reference:=Worksheets("" _
& sOrigSheet & "").Range("" & sOrigCell & "")
Application.ScreenUpdating = True
End Sub
ماکرو کادر ورودی را نمایش می دهد که رمز عبور را می خواهد. سپس از همان رمز عبور برای محافظت از هر کاربرگ در ورک بوک استفاده می شود. همین نوع تغییر را می توان در ماکرو انجام داد که از همه کاربرگ ها محافظت نمی کند.