Você tem duas opções. Uma maneira é ir para a planilha ativada pelo VBA e adicionar sua própria lógica usando o VBA, mas exige que sua planilha seja xlsm
e o usuário final deve ativar macros na pasta de trabalho, mas dessa forma você obtém o melhor controle sobre as ações do usuário. A segunda maneira é com xlsx
sem VBA - mas você não pode negar algumas ações ao usuário, como excluir as segmentações ou alterar o nome do gráfico.
1) Você pode fazer como recomendado aqui :
Private Sub Chart1_Click()
ActiveSheet.ChartObjects(1).CopyPicture
MsgBox ("Chart copied to clipboard. You can now paste this into another application.")
End Sub
Isso significa que você precisa converter sua pasta de trabalho em xlsm, pasta de trabalho com macros. Em seguida, adicione uma macro para manipular a ação da área de transferência no clique do gráfico.
2) A melhor maneira que eu acho é que você deixe o elemento Chart desbloqueado na planilha protegida e modifique seu propriedades com uma macro :
Sub macro()
ActiveChart.ProtectData = True
ActiveChart.ProtectFormatting = True
ActiveChart.ProtectSelection = False
End Sub
ou para todos os gráficos em uma planilha:
For Each i In ActiveSheet.ChartObjects
i.Chart.ProtectSelection = False
i.Chart.ProtectData = True
i.Chart.ProtectFormatting = True
Next i
Dessa forma, você usa macros ao criar a pasta de trabalho, mas a pasta de trabalho em si não contém o VBA.
Se você criar uma planilha separada para um gráfico, poderá protegê-la separadamente com uma senha:
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
Quanto às segmentações, você precisa deixá-las desbloqueadas e marcar "Usar relatórios dinâmicos" ao bloquear a planilha.