Contenido
Para crear una tabla dinámica basada en una consulta SQL utilizando VBA en Excel, debes seguir varios pasos. A continuación, te proporciono un ejemplo básico que te guiará a través del proceso. Este ejemplo asume que tienes una base de datos a la que puedes conectarte con una cadena de conexión adecuada (por ejemplo, una base de datos de Access o SQL Server).
Paso 1: Configura el entorno
- Habilitar la referencia a ADO: Asegúrate de habilitar la referencia a la biblioteca Microsoft ActiveX Data Objects (ADO) en VBA. Puedes hacer esto yendo a `Herramientas > Referencias` en el editor de VBA y seleccionando la biblioteca `Microsoft ActiveX Data Objects x.x Library`.
Paso 2: Escribe el código VBA
Sub CrearTablaDinamicaDesdeSQL()
Dim conn As Object
Dim rs As Object
Dim connStr As String
Dim sqlStr As String
Dim ws As Worksheet
Dim pvtCache As PivotCache
Dim pvtTable As PivotTable
Dim dataRange As Range
' Configurar cadena de conexión
connStr = "Provider=SQLOLEDB;Data Source=SERVIDOR;Initial Catalog=BASE_DATOS;User ID=USUARIO;Password=CONTRASEÑA;"
' Definir consulta SQL
sqlStr = "SELECT * FROM TuTabla WHERE Condicion"
' Crear conexión ADO
Set conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
' Abrir conexión y ejecutar consulta
conn.Open connStr
rs.Open sqlStr, conn, 3, 1
' Referencia a la hoja de cálculo
Set ws = ThisWorkbook.Worksheets("Hoja1") ' Cambia "Hoja1" por el nombre de tu hoja
' Pasar datos al rango de la hoja de cálculo
ws.Cells.Clear
ws.Range("A1").CopyFromRecordset rs
' Cerrar el recordset y la conexión
rs.Close
conn.Close
Set dataRange = ws.Range("A1").CurrentRegion
' Crear el caché de la tabla dinámica
Set pvtCache = ThisWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=dataRange)
' Crear la tabla dinámica
Set pvtTable = pvtCache.CreatePivotTable( _
TableDestination:=ws.Range("E3"), _
TableName:="TablaDinamica")
' Configurar camp os en la tabla dinámica
With pvtTable
' Asegúrate de cambiar "Campo1", "Campo2", etc. por los nombres reales de tus campos
.PivotFields("Campo1").Orientation = xlRowField
.PivotFields("Campo2").Orientation = xlColumnField
.PivotFields("Campo3").Orientation = xlDataField
End With
MsgBox "Tabla dinámica creada exitosamente."
End Sub
Consideraciones:
- Cadena de Conexión: Asegúrate de modificar la cadena de conexión (`connStr`) según tu base de datos y entorno.
- Consulta SQL: Ajusta la consulta SQL (`sqlStr`) para obtener los datos que necesitas.
- Hoja de Cálculo: Cambia el nombre de la hoja de cálculo (y su referencia) en el código según sea necesario.
- Nombres de Campos: Asegúrate de reemplazar `»Campo1″`, `»Campo2″`, `»Campo3″`, etc., por los nombres de campo reales de tu consulta SQL.
Con este código, puedes crear una tabla dinámica en Excel que se genera a partir de los datos recuperados por una consulta SQL.