Excel 如何在工作表上设置保护,但在重新启动后启用大纲显示和筛选?

Excel 如何在工作表上设置保护,但在重新启动后启用大纲显示和筛选?,excel,vba,Excel,Vba,我想向客户发送一份价目表,并需要保护工作表(仅两份)。但是,我希望允许分组/概述和筛选数据。由于工作表应该发给客户,所以我不想用任何事情打扰他 我尝试使用所需的条件设置密码,但每当我重新打开工作簿时,分组/大纲都会被锁定 我能想到的是尝试使用数据透视表 Option Explicit Sub protection() Dim ws1 As Worksheet Set ws1 = ThisWorkbook.Sheets("Sheet1") Dim ws2 As Worksheet Set ws

我想向客户发送一份价目表,并需要保护工作表(仅两份)。但是,我希望允许分组/概述和筛选数据。由于工作表应该发给客户,所以我不想用任何事情打扰他

我尝试使用所需的条件设置密码,但每当我重新打开工作簿时,分组/大纲都会被锁定

我能想到的是尝试使用数据透视表

Option Explicit
Sub protection()

Dim ws1 As Worksheet
Set ws1 = ThisWorkbook.Sheets("Sheet1")

Dim ws2 As Worksheet
Set ws2 = ThisWorkbook.Sheets("Sheet2")

 Dim strPassword As String: strPassword = "***"


    With ws1

        .Protect Password:=strPassword, UserInterfaceOnly:=True, AllowFiltering:=True
        .EnableOutlining = True

    End With


    With ws2

        .Protect Password:=strPassword, UserInterfaceOnly:=True, AllowFiltering:=True

        .EnableOutlining = True

    End With


End Sub

重新打开工作簿后,需要重置工作表保护,以便UserInterfaceOnly正常工作

Private Sub Workbook_Open()
    protection
End Sub    

Sub protection()
    Const Password = "***"        
    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets(Array("Sheet1", "Sheet2"))
        With ws  
            .Protect Password:=Password , UserInterfaceOnly:=True, AllowFiltering:=True
            .EnableOutlining = True
        End With
    Next    
End Sub

谢谢你的回复。我先使用我的代码,然后将您的代码放入此工作簿。这是唯一适合我的方法。我不明白为什么。正如我所说的,我需要将工作簿发送给客户,我担心他会提示允许此代码可能崩溃的宏。假设他打开工作簿,允许宏,但不能使用分组。然后他重新打开工作簿,没有提示,他可以使用分组。我说的对吗?我的代码有一个输入错误,删除了不必要的
Unprotect
。单击“启用内容”后,
工作簿将打开。如果不启用内容,这将无法工作。