4

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

3 ответа3

2

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

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) Я думаю, что лучшим способом было бы оставить элемент Chart разблокированным на защищенном листе и изменить его свойства с помощью макроса:

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

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

0

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

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

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

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .