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 det 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: Du sparar tid jämfört med att exportera och importera manuellt varje gång.
  • Flexibilitet: Du kan enkelt ändra koden för att hämta andra tabeller eller filtrera data.

Förberedelser innan import

Innan vi går in på koden, se till att du har följande:

  1. En Access-databas (i formatet .mdb eller .accdb).
  2. Excel med VBA-åtkomst.
  3. Kännedom om den tabell 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 först 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

Följande kod 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 hantera din data effektivt och göra din arbetsdag mer produktiv.