如何自动刷新受保护工作表中的数据透视表

时间:2018-12-13 01:35:23

标签: excel pivot-table protected

问题: 我的工作簿中有两个工作表(A和B),每个工作表包含几个表和3个数据透视表。每当单击或更新这些数据透视表上的单元格时,我就会使用下面的代码自动刷新这些数据透视表。奏效了。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
PivotTables("001").RefreshTable
PivotTables("002").RefreshTable
PivotTables("003").RefreshTable
End Sub

现在,用密码保护这些工作表后,如何保持相同的刷新功能?

为了测试,我通过密码仅保护了工作表。 然后,我将此代码放在ThisWorkbook模块的下面(在论坛中找到)。

Private Sub Workbook_Open()
With Me.Worksheets("A")
    .AllowPivotTable = True
    .Protect Contents:=True, UserInterfaceOnly:=True, _
        AllowUsingPivotTables:=True
End With

End Sub

在关闭工作簿并再次打开它之后, 程序显示错误消息:

  

“运行时错误438,对象不支持此属性或方法”

对于代码行.AllowPivotTable = True

您能告诉我该怎么做吗? 此启用代码不包含密码。 我需要在密码中输入密码吗? 我读过一些文章说最好不要在代码中输入密码。

1 个答案:

答案 0 :(得分:0)

我有同样的情况,这就是我的解决方法。

我有3张工作表,分别为SillLevae,摘要1和摘要2。请病假包含主要数据,摘要1和2包含数据透视表,因此下面是我尝试的代码,它工作正常。

请尝试这种方式:

Sub RefreshPtInSummary1()

    Call RefreshPivotTables(shtSummary1)

End Sub

Sub RefreshPtInSummary2()

    Call RefreshPivotTables(shtSummary2)

End Sub

Sub RefreshPivotTables(sht As Worksheet)

    Dim pt As pivotTable

    shtSummary1.Unprotect g_sPassword
    shtSummary2.Unprotect g_sPassword
    For Each pt In sht.PivotTables
        pt.PivotCache.Refresh
        Exit For
    Next pt
    shtSummary1.Protect g_sPassword
    shtSummary2.Protect g_sPassword
    MsgBox "Pivot Table Updated"

End Sub