繁体   English   中英

用按钮刷新受保护的数据透视表?

[英]Refresh protected pivot-table with a button?

我有一个用于按钮的宏,用于刷新工作表中的所有数据透视表:

Sub Button3_Click()
ThisWorkbook.RefreshAll
End Sub

我想添加功能以刷新所有数据透视表,即使它们位于受保护的工作表上也是如此。 我使用密码MyPwd保护了数据透视表,并使用了以下代码,但无法正常工作:

Sub Button3_Click()
Unprotect Password:="MyPwd"
ThisWorkbook.RefreshAll
Protect Password:="MyPwd", _
DrawingObjects:=True, Contents:=True, _
Scenarios:=True, AllowUsingPivotTables:=True
End With
End Sub

Visual Basic对我来说是全新的。 我究竟做错了什么?

所需的Unprotect是工作表方法。 您应该合格。

Sub ProtRef()
    Dim TargetSht As Worksheet
    Set TargetSht = ThisWorkbook.Sheets("Sheet1") 'Modify as needed.

    With TargetSht
        .Unprotect MyPwd
        ThisWorkbook.RefreshAll
        .Protect MyPwd
    End With
End Sub

注意TargetShtWith-End With 让我们知道是否有帮助。

编辑:

Sub ProtRef()

    Dim WB As Workbook, WS As Worksheet

    For Each WS In WB.Worksheets
        If WS.Name <> "Sheet1" Then
            WS.Unprotect MyPwd
        End If
    End With

    ThisWorkbook.RefreshAll

    For Each WS In WB.Worksheets
        If WS.Name <> "Sheet1" Then
            WS.Protect MyPwd
        End If
    End With

End Sub

粘贴到常规模块中,如下所示:

在此处输入图片说明

让我们知道是否有帮助。

谢谢@ BK201的破解,您的确向我指出了正确的方向。 我在按钮中使用了这段代码,它似乎可以解决问题:

Sub Button1_Click()


Dim Sht As Worksheet

For Each Sht In ThisWorkbook.Worksheets
Sht.Unprotect Password:="MyPwd"
ThisWorkbook.RefreshAll

Next

For Each Sht In ThisWorkbook.Worksheets
Sht.Protect Password:="MyPwd"
Next

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM