【问题标题】:How to automatically refresh the pivot tables in a protected sheet如何自动刷新受保护工作表中的数据透视表
【发布时间】:2019-05-14 04:42:11
【问题描述】:

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

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

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

为了测试,我用密码保护了工作表 A。 然后,我将这段代码(从论坛中找到)放在 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

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

【问题讨论】:

  • 如果您使用密码保护文件,那么我看不到在您的代码中使用它的方法。但是,您可以要求输入密码,然后将该字符串传递给您的 .Unprotect Password:= 参数。但是,如果您每次单击/更新单元格时都这样做,这可能会很快变得非常旧!如果您只是密码保护以防止临时用户搞砸,那么您可能可以安全地将其放入您的代码中。如果您想防止黑客入侵,那就是另一回事了。
  • 哪个论坛有.AllowPivotTable
  • 回复BigBen:我从这里的第一个答案social.technet.microsoft.com/Forums/office/en-US/…得到那个代码

标签: excel pivot-table protected


【解决方案1】:

我遇到了同样的情况,这就是我的解决方法。

我有 3 张名为病假的工作表、摘要 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

【讨论】:

    猜你喜欢
    • 2016-11-30
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 2021-02-20
    • 2011-06-07
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    相关资源
    最近更新 更多