Permitir seleccionar pero no editar un gráfico y segmentaciones en una hoja de Excel protegida

Permitir seleccionar pero no editar un gráfico y segmentaciones en una hoja de Excel protegida

Me gustaría compartir un archivo de Excel que contenga segmentaciones y gráficos. Quiero que los usuarios puedan usar las segmentaciones para filtrar y luego seleccionar y copiar los gráficos. Pero quiero proteger la hoja y evitar cualquier edición del gráfico y las segmentaciones.
Por lo que puedo ver, las opciones son bloquear los gráficos y las segmentaciones, en cuyo caso no se pueden editar cuando la hoja está protegida, pero luego las segmentaciones se congelan y el gráfico no se puede copiar (ImprimirPantalla no es una opción) . O bien, desbloquearlos, en cuyo caso se vuelven utilizables pero editables.
¿Hay alguna forma de evitar esto?

Respuesta1

Tienes 2 opciones. Una forma es optar por una hoja de trabajo habilitada para VBA y agregar su propia lógica usando VBA, pero requiere que su hoja lo esté xlsmy el usuario final debe habilitar las macros en su libro de trabajo, pero de esta manera obtiene el mejor control sobre las acciones permitidas del usuario. La segunda forma es xlsxsin VBA, pero no puede negar algunas acciones al usuario allí, como eliminar las segmentaciones o cambiar el nombre del gráfico.

1) puedes hacercomo se recomienda aquí:

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

Significa que necesita convertir su libro de trabajo a xlsm, un libro de trabajo con macros. Luego agregue una macro para manejar la acción del portapapeles al hacer clic en el gráfico.

2) Creo que la mejor manera sería dejar el elemento Gráfico desbloqueado en la hoja de trabajo protegida ymodificar sus propiedades con una macro:

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

o para todos los gráficos en una hoja:

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

De esta manera, utiliza macros al crear el libro de trabajo, pero el libro de trabajo en sí no contiene VBA.

Si crea una hoja separada para un gráfico, puede protegerla por separado con una contraseña:

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

En cuanto a las segmentaciones, debe dejarlas desbloqueadas y marcar "Usar informes dinámicos" al bloquear la hoja de trabajo.

Respuesta2

¿Por edición te refieres solo a los datos o estilos subyacentes de los propios gráficos?

Si solo desea que los datos estén bloqueados, puede tener sus datos en la hoja protegida (donde también puede permitir el uso de pivotes, seleccionar, ordenar, etc.) y tener sus gráficos en otra hoja.

AquíSugieren usar una macro que copia un gráfico al hacer clic, que es algo que podría usar si la hoja con el gráfico también está protegida.

Respuesta3

Intente habilitar el modo de solo lectura. Creo que es una función de Excel (separada de la Vista protegida), pero podría estar equivocado.

información relacionada