VB-Tec.de Visual Basic - Technik, FAQ, Tricks, BeispieleHome / Objekte / Office / Excel Zugriff auf Excel-Tabellen ohne Excel |
Der Zugriff auf die in Excel-Dateien (*.xls) gespeicherten Daten erfordert normalerweise eine vollständige Excel-Installation, so dass die sogenannte ActiveX-Automation genutzt werden kann.
Mit Hilfe von ADO und der JetEngine kann auf die Tabellen einer Excel-Datei aber auch wie auf eine normale Datenbank zugegriffen werden, ohne den oben erwähnten Overhead.
Die folgende Routine gibt die komplette Tabelle "2001" aus der Excel-Datei "test.xls" im Testfenster aus:
Public Sub Test()
Dim Col As ADODB.Field
With ExcelTable("D:\xyz\test.xls", "2001")
'Kopfzeile ausgeben:
For Each Col In .Fields
Debug.Print Col.Name,
Next Col
Debug.Print
'Daten ausgeben:
Do Until .EOF
For Each Col In .Fields
Debug.Print Col.Value,
Next Col
Debug.Print
.MoveNext
Loop
.Close
End With
End Sub
Sogar Änderungen der vorhandenen Excel-Tabelle können gemacht werden:
With ExcelTable(D:\xyz\test.xls", "2001")
'Neue Zeile hinzufügen:
.AddNew Array("Monat", "Wert"), Array("Dez.", 25.5)
'Vorhandenen Wert ändern:
.Update "Wert", 27.7
.Close
End With
Binden Sie die "Microsoft ActiveX Data Object Library" via Projekt/Verweise (Project/References) in Ihr Projekt ein. Fügen Sie folgenden Code hinzu:
Public Function ExcelTable( _
ByRef Path As String, _
ByRef Table As String _
) As ADODB.Recordset
'Deklarationen:
Dim SQL As String
Dim Con As String
'Los gehts:
SQL = "select * from [" & Table & "$]"
Con = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Extended Properties=Excel 8.0;" _
& "Data Source=" & Path & ";"
Set ExcelTable = New ADODB.Recordset
ExcelTable.Open SQL, Con, adOpenKeyset, adLockOptimistic
End Function
© Jost Schwider, 29.12.2001-29.12.2001 - http://vb-tec.de/exceltab.htm