Permitir selecionar, mas não editar, um gráfico e fatiadores em uma planilha Excel protegida

4

Gostaria de compartilhar um arquivo do Excel com fatias e gráficos. Eu quero que os usuários possam usar as segmentações para filtrar e, em seguida, selecionar e copiar os gráficos. Mas eu quero proteger a folha e evitar qualquer edição do gráfico e das segmentações. Tanto quanto eu posso ver, as opções são para bloquear os gráficos e segmentações, caso em que eles não são editáveis quando a planilha está protegida, mas as fatias são frosen e o gráfico não pode ser copiado (PrintScreen não é uma opção) . OU, para desbloqueá-los, caso em que eles se tornam utilizáveis, mas editáveis.
Existe uma maneira de contornar isso?

    
por eli-k 21.06.2016 / 17:09

3 respostas

2

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.

    
por 29.06.2016 / 08:54
0

Por edição, você quer dizer apenas os dados ou estilos subjacentes dos próprios gráficos?

Se você quiser que os dados sejam bloqueados, você pode ter seus dados na planilha protegida (onde você também pode permitir o uso de pivôs, seleção, classificação, etc.) e ter seus gráficos em outra planilha.

Aqui eles sugerem usar uma macro que copie um gráfico ao clicar, que é algo que você pode usar se a planilha com o gráfico também estiver protegida.

    
por 28.06.2016 / 14:45
0

Tente ativar o modo somente leitura. Eu acredito que é um recurso no Excel (separado do Modo de Exibição Protegido), mas posso estar errado.

    
por 28.06.2016 / 15:56