Обновить сводку на защищенном листе - ошибка, даже если снять защиту в VBA - PullRequest
0 голосов
/ 16 октября 2019

У меня есть сводная таблица, которая автоматически обновляется при активации листа, с данными из другой защищенной вкладки. Несмотря на то, что я снимаю защиту с вкладки перед обновлением, я все равно получаю:

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

Ударяюсь головой о стену - почему это не работает?

Приветствия

1 Ответ

0 голосов
/ 30 октября 2019

Поскольку сводные таблицы находятся на защищенных листах, вы получаете эту ошибку, поэтому вам необходимо снять защиту с них перед обновлением

, поэтому используйте кнопку обновления на каждом листе и назначьте этот макрос ниже,

g_sPassword-> - пароль для снятия защиты листа, я объявил его как переменную, поэтому я использую его напрямую

Sub RefreshPtInFirstsheet ()

Call RefreshPivotTables(sheetname1)

End Sub

Sub RefreshPtInSecondsheet ()

Call RefreshPivotTables(sheetname2)

End Sub

Sub RefreshPivotTables (sht As Worksheet)

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"

End Sub

...