Как поставить защиту на сводную таблицу в Excel

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

Как макрос работает

Объект PivotTable предоставляет несколько свойств, которые позволяют ограничить различные функции и компоненты сводной таблицы:

  • EnableWizard: Установка этого свойства в значение False отключает PivotTable Tools, контекстное меню, которое обычно активизируется при щелчке внутри сводной таблицы. В Excel 2003, этот параметр отключает мастер диаграмм и сводных таблиц Pivot.
  • EnableDrilldown: Установка этого свойства в  False, предотвращает пользователей от получения подробных данных, дважды щелкнув поле.
  • EnableFieldList: Установка этого свойства в False препятствует активации списка полей или перемещения сводных полей.
  • EnableFieldDialog: Установка этого свойства в значение False отключает способность пользователей изменять поле сводной с помощью диалогового окна Параметры Значение поля.
  • PivotCache.EnableRefresh: Установка этого свойства в значение False отключает возможность обновления сводной таблицы

Вы можете установить любой или все из этих свойств независимо друг от друга. В этом макросе, мы применяем все ограничения на целевую сводную таблицу.

Код макроса

Sub ZaschitaSvodnoiTablici()
'Шаг 1: Объявляем переменные
Dim pt As PivotTable
'Шаг 2: Курсор на активной ячейке в сводной таблице
On Error Resume Next
Set pt = ActiveSheet.PivotTables(ActiveCell.PivotTable.Name)
'Шаг 3: Выход, если активная ячейка не в сводной таблице
If pt Is Nothing Then
MsgBox "Вы должны поместить курсор в сводную таблицу."
Exit Sub
End If
'Шаг 4: Наложить ограничения для полей сводной
With pt
.EnableWizard = False
.EnableDrilldown = False
.EnableFieldList = False
.EnableFieldDialog = False
.PivotCache.EnableRefresh = False
End With
End Sub

Как этот код работает

  1. Шаг 1 объявляет две переменные объекта, используя Pt в качестве контейнера памяти для сводной таблицы и Pf в качестве контейнера для памяти наших полей данных. Это позволяет макросу перебрать все поля данных в сводной таблице.
  2. На шаге 2 мы устанавливаем переменную Pt на имя сводной таблицы, на которой найдена активная ячейка. Мы делаем это, используя свойство ActiveCell.PivotTable.Name, чтобы получить имя целевой сводной.
  3. Шаг 3 проверяет, заполнена ли переменная PT сводной таблицы объекта.
  4. На последнем этапе макроса, мы применяем все PivotTable ограничения..

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.
Оцените статью
Добавить комментарий