Dataimport mha Access-fråga


I detta tips visas hur vi kan använda oss av en skapad fråga i MS Access för att importera data till Excel. Tipset visar också hur vi hanterar lösenordskyddade databaser.

 

I exemplet används ADO (ActiveX Data Objects) för import av data till Excel.

Saknas ADO-biblioteket på din dator kan den hämtas från Microsofts databashemsida. Det kan vara aktuellt för dig som använder XL 97 med ett äldre operativsystem än Windows 2000.

Innan proceduren körs måste en referens sättas till ADO:s bibliotek:
Det sker på följande sätt:

1. Öppna VB-Editorn i Excel.

2. Välj kommandot Verktyg | Referenser...

3. Kryssa för Microsoft ActiveX Data Objects x.x Library.

 

Om ett felmeddelande erhålls vid kopiering till VBA-modul så läs mer här»
 

 

(© 2002 - 2004 All rights Colo - Used by permission)

Option Explicit

 

Sub Importera_Data_AccessFraga()

   '© 2004 Alla rättigheter XL-Dennis

   Dim cnt As ADODB.Connection

   Dim rst As ADODB.Recordset

   Dim stDB As String, stSQL As String, stConn As String

   Dim wsSheet As Worksheet

 

   Set cnt = New ADODB.Connection

   Set rst = New ADODB.Recordset

   Set wsSheet = ThisWorkbook.Worksheets(1)

 

   stDB = ThisWorkbook.Path & "\" & "XLData1.mdb"

   'Då databasen är lösenordskyddad måste ett korrekt lösenord

   'anges vid anslutningen till databasen.

   stConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _

         "Data Source=" & stDB & ";" & _

         "Jet OLEDB:Database Password=dennis;"

 

   'Här anges namnet Access-frågan inom klammrar.

   stSQL = "[Access_Fraga]"

 

   wsSheet.Range("A1").CurrentRegion.Clear

 

   cnt.Open stConn

   rst.Open stSQL, cnt, adOpenForwardOnly, adLockReadOnly, adCmdTable

 

   wsSheet.Cells(2, 1).CopyFromRecordset rst

 

   rst.Close

   Set rst = Nothing

   cnt.Close

   Set cnt = Nothing

End Sub