在excel多表系統設計時,用工作表權限設置,或者不希望用戶破壞界面
結構及格式的時候會對表加密碼保護。但是在設計階段,或者在運行階段,
對一些數據寫入的時候需要臨時解開保護再重新加保,這種情況下如果工作表
比較多,手工操作會比較繁瑣,還好有VBA利器,本代碼就是專門
解決批量設置sheet表保護狀態 主要代碼如下
Option Explicit
'--Protect Start---Excel880.com---QQ80871835--
Public Sub E8_ProtectSheet(sht As Worksheet, ByVal flag As Boolean, Optional ByVal password = "")
'**根據工作表名保護或者解保護
'flag=true加保護 false解保護
'On Error Resume Next
If flag Then
sht.Protect password
Else
sht.Unprotect password
End If
End Sub
Public Sub E8_ProtectSheets(shtlist, Optional flag As Boolean = True, Optional password = "")
'**批量工作表保護或者解保護
'shtslist待操作工作表名列表 以逗號分隔 例如
Dim shts As Sheets, sht As Worksheet, wbk
Set wbk = ThisWorkbook
Set shts = wbk.Sheets(Split(shtlist, ","))
For Each sht In shts
Call E8_ProtectSheet(sht, flag)
Next
End Sub
Public Sub E8_ProtectAllSheets(Optional flag As Boolean = True, Optional password = "")
'**批量工作表保護或者解保護
'shtslist待操作工作表名列表 以逗號分隔 例如
Dim shts As Sheets, sht As Worksheet, wbk
Set wbk = ThisWorkbook
Set shts = wbk.Sheets
For Each sht In shts
Call E8_ProtectSheet(sht, flag, password)
Next
End Sub
'--Protect End
Private Sub Test()
Dim i&, j&, k&, arr, brr
'按列表保護
E8_ProtectSheets "sheet1,sheet2,sheet3,x", True, 123 '加保護
'E8_ProtectSheets "sheet1,sheet2,sheet3,x", False, 123'解保護
'E8_ProtectAllSheets True, 123 '保護所有工作表
'E8_ProtectAllSheets False, 123 '解保護所有工作表
End Sub
Public Sub 批量設置() '本示例 根據參數表對多個工作表設置不同的保護狀態和不同的保護密碼
Dim p, i
For i = 2 To 5
E8_ProtectSheet ThisWorkbook.Sheets(Cells(i, 1).Value), Cells(i, 2), Cells(i, 3)
Next
End Sub
附件下載 http://dwz.cn/421ea9