Contenido
Para listar todas las tablas dinámicas en un libro de Excel utilizando VBA, puedes crear un macro que recorra cada hoja de cálculo y luego cada tabla dinámica dentro de esas hojas. A continuación se presenta un ejemplo de código VBA que realiza esta tarea y lista todas las tablas dinámicas, mostrando información básica como el nombre de la tabla dinámica y la hoja en la que se encuentra:
Sub ListarTablasDinamicas()
Dim ws As Worksheet
Dim pt As PivotTable
Dim ultimaFila As Long
Dim hojaLista As Worksheet
' Crear o seleccionar una hoja para listar las tablas dinámicas
On Error Resume Next
Set hojaLista = ThisWorkbook.Sheets("ListaTablasDinamicas")
On Error GoTo 0
If hojaLista Is Nothing Then
Set hojaLista = ThisWorkbook.Sheets.Add
hojaLista.Name = "ListaTablasDinamicas"
Else
hojaLista.Cells.Clear
End If
' Encabezados
hojaLista.Range("A1").Value = "Hoja"
hojaLista.Range("B1").Value = "Tabla Dinámica"
hojaLista.Range("C1").Value = "Rango de la tabla"
' Establecer la posición de inicio para listar
ultimaFila = 2
' Recorrer cada hoja de cálculo en el libro
For Each ws In ThisWorkbook.Worksheets
' Ignorar la hoja que estamos usando para listar
If ws.Name <> hojaLista.Name Then
' Recorrer cada tabla dinámica en la hoja
For Each pt In ws.PivotTables
hojaLista.Cells(ultimaFila, 1).Value = ws.Name
hojaLista.Cells(ultimaFila, 2).Value = pt.Name
hojaLista.Cells(ultimaFila, 3).Value = pt.TableRange2.Address
ultimaFila = ultimaFila + 1
Next pt
End If
Next ws
' Ajustar el ancho de las columnas para mejor visibilidad
hojaLista.Columns("A:C").AutoFit
MsgBox "Se ha completado la lista de todas las tablas dinámicas en el libro."
End Sub
Cómo usar este código:
- Abre Excel y presiona `ALT` + `F11` para abrir el Editor de VBA.
- En el Editor de VBA, ve a `Insertar` > `Módulo` para crear un nuevo módulo.
- Copia y pega el código anterior en el módulo recién creado.
- Cierra el Editor de VBA.
- Regresa a Excel, presiona `ALT` + `F8`, selecciona `ListarTablasDinamicas` y haz clic en `Ejecutar`.
Este código generará una nueva hoja llamada «ListaTablasDinamicas» (o reutilizará la que ya existe con ese nombre) y en ella colocará un listado con el nombre de cada tabla dinámica, la hoja en la que se encuentra y el rango que ocupa.