无法完全保护 excel 个工作表
unable to completely protect excel worksheet
我正在尝试制作访问请求表,请求者可以在其中选择所需的访问权限并通过电子邮件提交以供批准。在我的表单中,我在请求者可以手动输入详细信息的字段中使用了文本框(ActiveX 控件)——比如他们的名字。对于某些字段,例如他们所属的部门,我使用组合框(ActiveX 控件)作为下拉列表,使用复选框(ActiveX 控件)来选择他们请求的访问/权限。
一旦他们输入了所有详细信息并单击发送按钮,所有字段都应该被锁定并且不能再进行编辑。我添加了下面的宏来保护 sheet,点击后,它显示受保护,但我仍然可以在文本框、复选框和下拉菜单中进行更改。
Dim ws As Worksheet
For Each ws In Worksheets
ws.Protect Password:="P@ssw0rd", UserInterfaceOnly:=True
Next ws
我试过了
Sub DisableBxs()
TADeptCombBx1.Enabled = False
TADeptCombBx2.Enabled = False
CheckBox1.Enabled = False
CheckBox10.Enabled = False
FirstNameTxtBx.Enabled = False
MiddleNameTxtBx.Enabled = False
FirstNameTxtBx.Enabled = False
MiddleNameTxtBx.Enabled = False
FirstNameTxtBx.Enabled = False
MiddleNameTxtBx.Enabled = False
End Sub
我在 sheet 中总共有 170 个文本框、复选框和组合框。执行代码时,它在调试时给我错误 'object not found'
要防止进入对象,您需要关闭它们的 Enabled
属性。
要访问放置在 sheet 上的 ActiveX 对象,您需要使用 Worksheet OLEObjects
集合。
类似
Sub ProtectAndDisableControls()
Dim ws As Worksheet
Dim ctrl As Object
' to exclude by control Name
For Each ws In Worksheets
For Each ctrl In ws.OLEObjects
If Not LCase$(ctrl.Name) Like "approve*" _
And Not LCase$(ctrl.Name) Like "reject*" Then
ctrl.Enabled = False
End If
Next ctrl
Next ws
' optional, to exclude specific control type(s)
' For Each ws In Worksheets
' For Each ctrl In ws.OLEObjects
' If Not TypeOf ctrl.Object Is MSForms.CommandButton Then
' ctrl.Enabled = False
' End If
' Next ctrl
' Next ws
End Sub
我正在尝试制作访问请求表,请求者可以在其中选择所需的访问权限并通过电子邮件提交以供批准。在我的表单中,我在请求者可以手动输入详细信息的字段中使用了文本框(ActiveX 控件)——比如他们的名字。对于某些字段,例如他们所属的部门,我使用组合框(ActiveX 控件)作为下拉列表,使用复选框(ActiveX 控件)来选择他们请求的访问/权限。
一旦他们输入了所有详细信息并单击发送按钮,所有字段都应该被锁定并且不能再进行编辑。我添加了下面的宏来保护 sheet,点击后,它显示受保护,但我仍然可以在文本框、复选框和下拉菜单中进行更改。
Dim ws As Worksheet
For Each ws In Worksheets
ws.Protect Password:="P@ssw0rd", UserInterfaceOnly:=True
Next ws
我试过了
Sub DisableBxs()
TADeptCombBx1.Enabled = False
TADeptCombBx2.Enabled = False
CheckBox1.Enabled = False
CheckBox10.Enabled = False
FirstNameTxtBx.Enabled = False
MiddleNameTxtBx.Enabled = False
FirstNameTxtBx.Enabled = False
MiddleNameTxtBx.Enabled = False
FirstNameTxtBx.Enabled = False
MiddleNameTxtBx.Enabled = False
End Sub
我在 sheet 中总共有 170 个文本框、复选框和组合框。执行代码时,它在调试时给我错误 'object not found'
要防止进入对象,您需要关闭它们的 Enabled
属性。
要访问放置在 sheet 上的 ActiveX 对象,您需要使用 Worksheet OLEObjects
集合。
类似
Sub ProtectAndDisableControls()
Dim ws As Worksheet
Dim ctrl As Object
' to exclude by control Name
For Each ws In Worksheets
For Each ctrl In ws.OLEObjects
If Not LCase$(ctrl.Name) Like "approve*" _
And Not LCase$(ctrl.Name) Like "reject*" Then
ctrl.Enabled = False
End If
Next ctrl
Next ws
' optional, to exclude specific control type(s)
' For Each ws In Worksheets
' For Each ctrl In ws.OLEObjects
' If Not TypeOf ctrl.Object Is MSForms.CommandButton Then
' ctrl.Enabled = False
' End If
' Next ctrl
' Next ws
End Sub