Export av statisk data till Access
Här demonstreras hur vi automatiskt kan exportera data från ett arbetsblad i Excel till en tabell i en Access-databas.I exemplet används ADO (ActiveX Data Objects) för export av all data.
Saknas ADO-biblioteket på din dator kan den hämtas från Microsofts databashemsida. Det kan vara aktuellt för dig som använder Excel 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
I första exemplet visas hur vi överför data per post medan det andra hur vi exporterar all data direkt till en tabell.
För att det andra exemplet ska fungera krävs att fältnamnen finns angivna i första raden i arbetsbladet, exakt till såväl antal som stavning.
Exempel 1: Per post
Option Explicit
Sub Exportera_Accessdata()
'© 2003 Alla rättigheter XL-Dennis
Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset
Dim rnExportOmrade As Range, rnCell As Range
Dim stDB As String
Dim vaExport As Variant
Dim i As Long
Set rnExportOmrade = ActiveSheet.Range("D12:D16")
Set cnt = New ADODB.Connection
Set rst = New ADODB.Recordset
stDB = ThisWorkbook.Path & "\" & "XLData.mdb"
vaExport = rnExportOmrade.Value
'Här skapas databasanslutningen.
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & stDB & ";"
'Här öppnas tabellen tblNamn.
rst.Open "tblNamn", cnt, 1, 3, adCmdTableDirect
'Här läses data in i tabellen.
For i = LBound(vaExport) To UBound(vaExport)
With rst
.AddNew
.Fields("Namn") = vaExport(i, 1)
.Update
End With
Next i
'Kopplar ned anslutningen och tömmer arbetsminnet.
rst.Close
Set rst = Nothing
cnt.Close
Set cnt = Nothing
With Application
.ScreenUpdating = False
rnExportOmrade.ClearContents
.ScreenUpdating = True
End With
End Sub
Exempel 2: All data
Option Explicit
Sub Update_Table_Access()
'© 2004 Alla rättigheter XL-Dennis
Dim cnt As ADODB.Connection
Dim stSQL As String, stCon As String, stDB As String
'Namn och sökväg till databasen.
stDB = ThisWorkbook.Path & "\Db1.mdb"
'Skapa anslutningssträngen.
stCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & stDB & ";"
'Skapa SQL-uttrycket.
stSQL = "INSERT INTO Table1 SELECT * FROM [Sheet1$] IN '" _
& ThisWorkbook.FullName & "' 'Excel 8.0;'"
'Instantiera ADODB objektet.
Set cnt = New ADODB.Connection
With cnt
.Open stCon
'Exekverar uppdateringen.
.Execute (stSQL)
End With
'Kopplar ned anslutningen.
cnt.Close
'Frigör objekt från minnet.
Set cnt = Nothing
End Sub