宏可对工作表进行拼写检查,然后在不删除规则的情况下将其锁定

时间:2019-02-07 22:46:22

标签: excel vba spell-checking

我有一个宏,可以解锁我的excel文档,进行拼写检查,然后锁定工作表。但是,锁定工作表后,它将删除关于用户在锁定的电子表格中可以执行的操作的规则(例如:添加/删除行,更改框的高度/宽度等)

我尝试列出start chrome --headless --print-to-pdf="C:\\temp\\1.pdf" http://example.com 之后的规则,但是它不起作用。

.Protect Password

1 个答案:

答案 0 :(得分:0)

您要寻找的是能够修改工作表而无需实际对其进行保护。 您可以保护工作表,但允许VBA进行更改,而用户则不能:

ActiveSheet.Protect UserInterfaceOnly:=True

https://docs.microsoft.com/en-us/office/vba/api/excel.worksheet.protect

名称:UserInterfaceOnly

描述:True以保护用户界面,但不保护宏。如果省略此参数,则保护既适用于宏,也适用于用户界面。

这假定首先保护工作表时将选项设置为True。


或者,您可以将当前保护设置的状态存储在Protection对象中:

Dim myProtection as Protection Set myProtection = ActiveSheet.Protection

如下所示: 请注意,出于某些原因,.AllowEditRanges在读取时返回错误,因此我没有将其包括在列表中。

Sub test()

    'Pick your Worksheet
    Dim mySheet As Worksheet
    Set mySheet = ActiveSheet

    'Unprotect it
    Dim myProtection As Protection
    Set myProtection = mySheet.Protection
    mySheet.Unprotect

    'Do your VBA things

    'Re Protect it
    With myProtection

        mySheet.Protect AllowFormattingCells:=.AllowFormattingCells, _
                        AllowFormattingColumns:=.AllowFormattingColumns, _
                        AllowFormattingRows:=.AllowFormattingRows, _
                        AllowInsertingColumns:=.AllowInsertingColumns, _
                        AllowInsertingRows:=.AllowInsertingRows, _
                        AllowInsertingHyperlinks:=.AllowInsertingHyperlinks, _
                        AllowDeletingColumns:=.AllowDeletingColumns, _
                        AllowDeletingRows:=.AllowDeletingRows, _
                        AllowSorting:=.AllowSorting, _
                        AllowFiltering:=.AllowFiltering, _
                        AllowUsingPivotTables:=.AllowUsingPivotTables

    End With

End Sub

注意:.Protect包括[DrawingObjects],[Scenarios]和[USerInterfaceOnly],而Protection对象未提供这些设置。我知道[Contents]参数应该与.AllowEditRanges相关,但是由于无法访问,我想它也会被跳过,