En aquest tema, aprendrem com accedir a bases de dades des de VBA. Això és especialment útil quan necessitem treballar amb grans volums de dades que es troben emmagatzemades en bases de dades externes. Utilitzarem ADO (ActiveX Data Objects) per establir connexions i manipular dades.

  1. Introducció a ADO

ADO és una biblioteca que permet accedir a dades emmagatzemades en diverses fonts de dades, com ara bases de dades SQL Server, Access, i altres. ADO proporciona una interfície per connectar-se a la base de dades, executar consultes SQL i manipular els resultats.

Conceptes clau:

  • Connexió: Establir una connexió amb la base de dades.
  • Comandament: Executar instruccions SQL.
  • Registre: Manipular els resultats de les consultes.

  1. Configuració de l'entorn

Abans de començar a treballar amb ADO, hem d'assegurar-nos que la biblioteca ADO estigui referenciada en el nostre projecte VBA.

Passos per referenciar ADO:

  1. Obre l'Editor VBA (Alt + F11).
  2. Ves a Eines > Referències.
  3. Cerca i selecciona Microsoft ActiveX Data Objects x.x Library (on x.x és la versió de la biblioteca).

  1. Establir una connexió amb la base de dades

Per establir una connexió amb una base de dades, necessitem una cadena de connexió que contingui la informació necessària per connectar-nos a la base de dades.

Exemple de codi:

Sub ConnectToDatabase()
    Dim conn As Object
    Set conn = CreateObject("ADODB.Connection")
    
    Dim connectionString As String
    connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\to\your\database.accdb;"
    
    conn.Open connectionString
    
    If conn.State = 1 Then
        MsgBox "Connexió establerta correctament!"
    Else
        MsgBox "No s'ha pogut establir la connexió."
    End If
    
    conn.Close
    Set conn = Nothing
End Sub

Explicació del codi:

  • CreateObject("ADODB.Connection"): Crea una instància de l'objecte de connexió ADO.
  • connectionString: Conté la informació necessària per connectar-se a la base de dades.
  • conn.Open: Estableix la connexió amb la base de dades.
  • conn.State: Verifica l'estat de la connexió (1 significa que la connexió està oberta).
  • conn.Close: Tanca la connexió.

  1. Executar consultes SQL

Un cop establerta la connexió, podem executar consultes SQL per recuperar o manipular dades.

Exemple de codi per executar una consulta SELECT:

Sub ExecuteSelectQuery()
    Dim conn As Object
    Dim rs As Object
    Set conn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
    
    Dim connectionString As String
    connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\to\your\database.accdb;"
    
    conn.Open connectionString
    
    Dim sql As String
    sql = "SELECT * FROM YourTable"
    
    rs.Open sql, conn
    
    Do While Not rs.EOF
        Debug.Print rs.Fields("YourFieldName").Value
        rs.MoveNext
    Loop
    
    rs.Close
    conn.Close
    Set rs = Nothing
    Set conn = Nothing
End Sub

Explicació del codi:

  • rs.Open sql, conn: Executa la consulta SQL i emmagatzema els resultats en l'objecte Recordset.
  • rs.EOF: Comprova si s'ha arribat al final del Recordset.
  • rs.Fields("YourFieldName").Value: Accedeix al valor d'un camp específic en el Recordset.
  • rs.MoveNext: Mou el cursor al següent registre del Recordset.

  1. Manipular dades

A més de recuperar dades, també podem inserir, actualitzar i eliminar registres en la base de dades.

Exemple de codi per inserir un registre:

Sub InsertRecord()
    Dim conn As Object
    Set conn = CreateObject("ADODB.Connection")
    
    Dim connectionString As String
    connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\to\your\database.accdb;"
    
    conn.Open connectionString
    
    Dim sql As String
    sql = "INSERT INTO YourTable (FieldName1, FieldName2) VALUES ('Value1', 'Value2')"
    
    conn.Execute sql
    
    conn.Close
    Set conn = Nothing
End Sub

Explicació del codi:

  • conn.Execute sql: Executa la instrucció SQL per inserir un nou registre en la taula especificada.

Exercicis pràctics

Exercici 1: Establir una connexió

Escriu un codi VBA que estableixi una connexió amb una base de dades Access i mostri un missatge si la connexió és exitosa.

Exercici 2: Executar una consulta SELECT

Escriu un codi VBA que executi una consulta SELECT per recuperar tots els registres d'una taula i mostri els valors d'un camp específic en la finestra de depuració.

Exercici 3: Inserir un registre

Escriu un codi VBA que insereixi un nou registre en una taula de la base de dades.

Solucions

Solució a l'Exercici 1:

Sub Exercise1()
    Dim conn As Object
    Set conn = CreateObject("ADODB.Connection")
    
    Dim connectionString As String
    connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\to\your\database.accdb;"
    
    conn.Open connectionString
    
    If conn.State = 1 Then
        MsgBox "Connexió establerta correctament!"
    Else
        MsgBox "No s'ha pogut establir la connexió."
    End If
    
    conn.Close
    Set conn = Nothing
End Sub

Solució a l'Exercici 2:

Sub Exercise2()
    Dim conn As Object
    Dim rs As Object
    Set conn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
    
    Dim connectionString As String
    connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\to\your\database.accdb;"
    
    conn.Open connectionString
    
    Dim sql As String
    sql = "SELECT * FROM YourTable"
    
    rs.Open sql, conn
    
    Do While Not rs.EOF
        Debug.Print rs.Fields("YourFieldName").Value
        rs.MoveNext
    Loop
    
    rs.Close
    conn.Close
    Set rs = Nothing
    Set conn = Nothing
End Sub

Solució a l'Exercici 3:

Sub Exercise3()
    Dim conn As Object
    Set conn = CreateObject("ADODB.Connection")
    
    Dim connectionString As String
    connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\to\your\database.accdb;"
    
    conn.Open connectionString
    
    Dim sql As String
    sql = "INSERT INTO YourTable (FieldName1, FieldName2) VALUES ('Value1', 'Value2')"
    
    conn.Execute sql
    
    conn.Close
    Set conn = Nothing
End Sub

Conclusió

En aquest tema, hem après com accedir a bases de dades des de VBA utilitzant ADO. Hem vist com establir una connexió, executar consultes SQL i manipular dades. Aquests coneixements ens permetran treballar amb dades emmagatzemades en bases de dades externes de manera eficient i efectiva. En el proper tema, explorarem com utilitzar VBA per controlar PowerPoint.

© Copyright 2024. Tots els drets reservats