【发布时间】: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