Разрешить выбор, но не редактирование диаграммы и срезов на защищенном листе Excel

Разрешить выбор, но не редактирование диаграммы и срезов на защищенном листе Excel

Я хотел бы поделиться файлом Excel, в котором есть срезы и диаграммы. Я хочу, чтобы пользователи могли использовать срезы для фильтрации, а затем выбирать и копировать диаграммы. Но я хочу защитить лист и запретить любое редактирование диаграммы и срезов.
Насколько я понимаю, есть варианты заблокировать диаграммы и срезы, в этом случае они не подлежат редактированию, когда лист защищен, но тогда срезы замораживаются, и диаграмму нельзя скопировать (PrintScreen не подходит). ИЛИ разблокировать их, в этом случае они становятся пригодными для использования, но редактируемыми.
Есть ли способ обойти это?

решение1

У вас есть 2 варианта. Один из них — использовать рабочий лист с поддержкой VBA и добавить собственную логику с помощью VBA, но для этого требуется, чтобы ваш лист был включен, xlsmа конечный пользователь должен включить макросы в вашей рабочей книге — но таким образом вы получите лучший контроль над разрешенными действиями пользователя. Второй способ — без xlsxVBA — но вы не можете запретить пользователю некоторые действия, например, удалить срезы или изменить имя диаграммы.

1) Вы можете сделатькак рекомендовано здесь:

Private Sub Chart1_Click()     
    ActiveSheet.ChartObjects(1).CopyPicture
    MsgBox ("Chart copied to clipboard.  You can now paste this into another application.")        
End Sub

Это означает, что вам нужно преобразовать вашу рабочую книгу в xlsm, рабочую книгу с макросами. Затем добавьте макрос для обработки действия буфера обмена при щелчке по диаграмме.

2) Я думаю, лучшим способом будет оставить элемент «Диаграмма» разблокированным на защищенном листе иизменить его свойства с помощью макроса:

Sub macro()
ActiveChart.ProtectData = True
ActiveChart.ProtectFormatting = True
ActiveChart.ProtectSelection = False
End Sub

или для всех диаграмм на листе:

For Each i In ActiveSheet.ChartObjects
    i.Chart.ProtectSelection = False
    i.Chart.ProtectData = True
    i.Chart.ProtectFormatting = True 
Next i

Таким образом, вы используете макросы при создании рабочей книги, но сама рабочая книга не содержит VBA.

Если вы создаете отдельный лист для диаграммы, вы можете защитить его отдельно паролем:

Sub macro()
Dim newChart As Chart

Range("C9:C11").Select
Set newChart = ActiveChart

With newChart
.Protect Password:="pwd", DrawingObjects:=True, Contents:=True
.ProtectData = True
.ProtectFormatting = True
.ProtectSelection = False
.ChartObjects(1).Chart.ProtectSelection = False

   'setting other properties
End With

End Sub

Что касается срезов, вам необходимо оставить их разблокированными и установить флажок «Использовать сводные отчеты» при блокировке рабочего листа.

решение2

Под редактированием вы подразумеваете только базовые данные или стили самих графиков?

Если вы хотите, чтобы данные были только заблокированы, вы можете разместить их на защищенном листе (где вы также можете разрешить использование сводных таблиц, выборку, сортировку и т. д.), а графики — на другом листе.

Здесьони предлагают использовать макрос, который копирует график по щелчку, что можно использовать, если лист с графиком также защищен.

решение3

Попробуйте включить режим только для чтения. Я думаю, что это функция Excel (отдельная от защищенного просмотра), но я могу ошибаться.

Связанный контент