Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在受保护的工作表上刷新数据透视-即使在VBA中取消保护也会出错_Excel_Vba_Pivot Table - Fatal编程技术网

Excel 在受保护的工作表上刷新数据透视-即使在VBA中取消保护也会出错

Excel 在受保护的工作表上刷新数据透视-即使在VBA中取消保护也会出错,excel,vba,pivot-table,Excel,Vba,Pivot Table,我有一个数据透视表,在工作表激活时自动刷新,数据来自另一个受保护的选项卡。即使我在刷新之前取消了对选项卡的保护,我仍然会得到: Run-time error '1004': Cannot edit PivotTable on protected sheet. 我的VBA: Private Sub Worksheet_Activate() Sheets("Extract").Unprotect "password" ActiveSheet.PivotTables("pvt_Activ

我有一个数据透视表,在工作表激活时自动刷新,数据来自另一个受保护的选项卡。即使我在刷新之前取消了对选项卡的保护,我仍然会得到:

Run-time error '1004':
Cannot edit PivotTable on protected sheet.
我的VBA:

Private Sub Worksheet_Activate()
   Sheets("Extract").Unprotect "password"
   ActiveSheet.PivotTables("pvt_Activity").PivotCache.Refresh
   Sheets("Extract").Protect Password:="password", Contents:=True, Scenarios:=True
End Sub
我的头撞在墙上-为什么这不起作用


干杯

由于数据透视表位于受保护的工作表中,因此会出现此错误,因此需要在刷新前取消对其的保护

因此,在每个工作表中都有一个刷新按钮,并在下面指定此宏

g_sPassword->是取消对工作表保护的密码,我已将其声明为变量,因此我直接使用它

子刷新配置文件表()

端接头

子刷新第二页()

端接头

子数据透视表(sht作为工作表)


End Sub

从字面上看,错误消息表明是另一个(活动)工作表受到保护。您也尝试过取消保护吗?我无法根据您提供的内容重新编程(假设活动工作表未受保护)。活动工作表未受保护。奇怪的是,如果我突然更改了数据源(通过添加1行或删除1行),它就会正常工作。只有当我保存并重新打开文件时,我才再次收到错误。仍然没有重新启动。我甚至不需要解除保护。你能详细解释一下你的设置吗?2页-1页,工作人员将定制系统中的数据转储放入其中。有已定义的标头和要运行的宏,以确保数据有效。验证后,它们将移动到第二张工作表,即数据透视表(这是一个带有偏移量的命名范围,因为数据可能会根据周的不同而增长/收缩)。如果我将偏移量更改为负一行,轴将刷新。一旦我保存并重新打开文件,就会出现此错误。
Call RefreshPivotTables(sheetname1)
Call RefreshPivotTables(sheetname2)
Dim pt As pivotTable

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