¿Cómo crear una tabla dinámica basada en una consulta SQL usando VBA?

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.

Conoce nuestra tienda

Ver más productos

Mejora tu nivel y logra tus objetivo

Excel

Excel cursos

Access

cursos de Access

Power BI

cursos power BI

Ayúdanos a hacer crecer el proyecto

Deja un comentario