En este macro veremos cómo aplicar restricciones a una Tabla dinámica. En el trabajo usualmente enviamos estas tablas dinámicas a los que forman parte de la Empresa y a los clientes y siempre corremos el riesgo de que, alguna de las partes hagan ajustes indebidos. Es por esta razón, que aprenderemos a utilizar una macro que muestre los ajustes de protección a través del VBA, evitando así a los usuarios hacer modificaciones en las mismas.
1er paso.- En la hoja1 del libro, elaboraremos o copiaremos un cuadro con información, de la cual tomaremos para crear nuestra tabla dinámica, ya sea en la misma hoja (Hoja1) o de lo contrario, en la Hoja2. En este caso, crearemos la Tabla dinámica en la Hoja2.
2do paso.- Crearemos un módulo en el VBA.
3er paso.- Colocaremos el siguiente código dentro del módulo.
Sub Restricciones()
'Paso 1: Declara tus variables
Dim pt As PivotTable
'Paso 2: Apuntar a la tabla dinámica en celda activa
On Error Resume Next
Set pt = ActiveSheet.PivotTables(ActiveCell.PivotTable.Name)
'Paso 3: Salir si la celda activa no se encuentra en una tabla dinámica
If pt Is Nothing Then
MsgBox "Usted debe colocar el cursor dentro de una tabla dinámica."
Exit Sub
End If
'Paso 4: Aplicar Restricciones a la Tabla dinámica:
With pt
.EnableWizard = False
.EnableDrilldown = False
.EnableFieldList = False
.EnableFieldDialog = False
.PivotCache.EnableRefresh = False
End With
'Colocando EnableDrilldown como falso se previene el acceso a los datos por medio de un doble click
'Colocando EnableRefresh como falso se evita que los datos obtenidos se puedan actualizar por medio de la opción actualizar
End Sub
4to paso.- Al tener nuestra tabla dinámica (Hoja2), pondremos el cursor en cualquier celda de la tabla dinámica.
5to paso.- Finalmente ejecutaremos la macro teniendo como hoja activa la Hoja2. Notarán que la lista de campos desaparecerá. De este modo, evitarán que el usuario pueda activar la lista de campos o mover los campos dinámicos alrededor.
Debajo encontrarán el link de excel para ver el ejemplo.