Importera Access-tabeller i Excel via VBA

Först publicerad:

| © ExcelKungen.com

about-accessIntroduktion: Importera Access-tabeller i Excel

Access har länge varit en del av Office-sviten, vilket gör att många företag har samlat på sig en mängd Access-databaser. Att kunna importera dessa databaser till Excel kan spara mycket tid och ansträngning, särskilt om du behöver göra detta regelbundet. I den här artikeln går vi igenom hur du på ett automatiserat sätt kan importera Access-tabeller i Excel via VBA (Visual Basic for Applications).

Varför använda VBA för import av Access-tabeller

Att använda VBA för att importera data från Access till Excel ger flera fördelar:

  • Automatisering: Du kan schemalägga eller köra makrot när som helst för att hämta den senaste datan.
  • Effektivitet: Sparar tid jämfört med att manuellt exportera och importera varje gång.
  • Flexibilitet: Du kan enkelt ändra koden för att hämta olika tabeller eller filtrera data.

Förberedelser innan import

Innan vi dyker in i koden, se till att du har följande förutsättningar:

  1. En Access-databas (antingen .mdb eller .accdb format).
  2. Excel installerat med VBA-åtkomst.
  3. Kännedom om den specifika tabellen i Access som du vill importera.

Ladda in ADO-objekt i Excel

För att kunna använda ADO (ActiveX Data Objects) i din VBA-kod måste du ladda in de nödvändiga objekten. Gör så här:

  1. Öppna Excel och tryck på ALT + F11 för att öppna VBA-editorn.
  2. Gå till Verktyg -> Referenser.
  3. Leta upp och markera Microsoft ActiveX Data Objects x.x Library (där x.x är versionsnumret).

access-excel-ado-objects

VBA-kod för att importera Access-tabell i Excel

Den följande koden visar hur du ansluter till din Access-databas och importerar data från en specifik tabell till Excel.

Databas: Access 2003 eller tidigare

Sub Importera_Access_I_Excel()
    'dimensions
    Dim datConnection As ADODB.Connection
    Dim recSet As ADODB.Recordset
    Dim strDB As String, strSQL As String
    Dim strTabell As String
    Dim lngCampos As Long
    Dim i As Long
    
    'välj sökväg till din Accessdatabas
    strDB = ThisWorkbook.Path & "\" & "db.mdb"
    
    'namn på tabellen i Access
    strTabell = "pengar_2011"
    
    'skapa ADO-kopplingen
    Set datConnection = New ADODB.Connection
    Set recSet = New ADODB.Recordset
    datConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" & strDB & ";"
    
    'SQL-förfrågan
    strSQL = "SELECT * FROM " & strTabell
    recSet.Open strSQL, datConnection
    
    'kopierar data till kalkylbladet (från och med rad 2)
    ActiveSheet.Cells(2, 1).CopyFromRecordset recSet
    
    'kopierar kolumnrubriker (rad 1)
    lngCampos = recSet.Fields.Count
    For i = 0 To lngCampos - 1
        ActiveSheet.Cells(1, i + 1).Value = recSet.Fields(i).Name
    Next
    
    'kopplar ned
    recSet.Close: Set recSet = Nothing
    datConnection.Close: Set datConnection = Nothing
End Sub

Databas: Access 2007 eller senare

Sub Importera_Access_I_Excel()
    'dimensions
    Dim datConnection As ADODB.Connection
    Dim recSet As ADODB.Recordset
    Dim strDB As String, strSQL As String
    Dim strTabell As String
    Dim lngCampos As Long
    Dim i As Long
    
    'välj sökväg till din Accessdatabas
    strDB = ThisWorkbook.Path & "\" & "db.accdb"
    
    'namn på tabellen i Access
    strTabell = "pengar_2011"
    
    'skapa ADO-kopplingen
    Set datConnection = New ADODB.Connection
    Set recSet = New ADODB.Recordset
    datConnection.Open "Provider=Microsoft.Ace.OLEDB.12.0;Persist Security Info=False;Data Source =" & strDB & ";"
    
    'SQL-förfrågan
    strSQL = "SELECT * FROM " & strTabell
    recSet.Open strSQL, datConnection
    
    'kopierar data till kalkylbladet (från och med rad 2)
    ActiveSheet.Cells(2, 1).CopyFromRecordset recSet
    
    'kopierar kolumnrubriker (rad 1)
    lngCampos = recSet.Fields.Count
    For i = 0 To lngCampos - 1
        ActiveSheet.Cells(1, i + 1).Value = recSet.Fields(i).Name
    Next
    
    'kopplar ned
    recSet.Close: Set recSet = Nothing
    datConnection.Close: Set datConnection = Nothing
End Sub

Sammanfattning

Att importera en Access-tabell till Excel via VBA är en kraftfull funktion som kan spara tid och förbättra databehandlingen. Med hjälp av den presenterade koden kan du enkelt automatisera processen och anpassa den efter dina behov. Genom att förstå och använda ADO kan du effektivt hantera din data och göra din arbetsdag mer produktiv.

Populära artiklar

Dagens tips

Relaterade artiklar