Zurück zur Homepage

Abfrage aus einer Excel-Mappe ohne Excel

Um Daten aus einer Excel-Datei zu holen, können Sie aus einem anderen Programm Excel fernsteuern, und zwar mittels COM. Was aber, wenn Excel nicht zur Verfügung steht? Entweder man kennt das BIFF-Format genau, oder man benutzt ADO. Die "Microsoft ActiveX Date Objects" (ADO) sind auf den meisten Rechnern schon von irgend einem Programm mit installiert worden, wenn nicht, kann man sich die Datei mdactype.exe bei Microsoft herunterladen und ausführen. Damit wird ADO installiert und in der Registry registriert. Ist das passiert, kann man sogar mit einer Scriptsprache auf Datenbanken und auch Excel zugreifen. Die Zip-Datei Artikel.zip enthält eine Excel-Datei, die für das Beispiel im Verzeichnis c:\ liegen muss ("c:\Artikel.xls"). Die Script-Datei für den Scripting-Host (.vbs) wird einfach mit einem Doppelklick ausgeführt.

Artikel.zip 8 kB
 

Dim db , rs
Dim adOpenKeyset , adOpenDynamic
Dim adOpenForwardOnly, adOpenStatic
Dim adLockBatchOptimistic, adLockOptimistic
Dim adLockPessimistic, adLockReadOnly
Dim Artikelname, Satzinhalt

adOpenDynamic = 2
adOpenForwardOnly = 0
adOpenKeyset = 1
adOpenStatic = 3

adLockBatchOptimistic = 4
adLockOptimistic = 3
adLockPessimistic = 2
adLockReadOnly = 1

call test

Sub test()
Dim Datei, Adresse
Dim Satz, Feld
Set db=CreateObject("ADODB.Connection")
Set rs=CreateObject("ADODB.Recordset")
Datei = "c:\Artikel.xls"
Artikelname=InputBox("Geben Sie einen Artikelnamen Ein")
If Artikelname="" then exit Sub
db.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
        & "Data Source=" _
        & Datei _
        & ";Extended Properties=Excel 8.0;"
rs.Open "SELECT * FROM [Artikel$] WHERE " & _
        "[Artikelname] LIKE '" & _
        Artikelname & _
        "%' ;", _
        db, _
        adOpenKeyset, _
        adLockOptimistic
If not(rs.EOF) then
        rs.MoveFirst
        Satzinhalt = "Art.-Nr. = " & rs.Fields(0)
        Satzinhalt = Satzinhalt  & vbCrLf
        Satzinhalt = Satzinhalt & "Artikel = " & rs.Fields(1)
        Satzinhalt = Satzinhalt  & vbCrLf
        Satzinhalt = Satzinhalt & "Liefer.- Nr = " & rs.Fields(2)       
        Satzinhalt = Satzinhalt  & vbCrLf
        Satzinhalt = Satzinhalt & "Kateg.- Nr. = " & rs.Fields(3)
        Satzinhalt = Satzinhalt  & vbCrLf
        Satzinhalt = Satzinhalt & "Liefereinh. = " & rs.Fields(4)       
        Satzinhalt = Satzinhalt  & vbCrLf
        Satzinhalt = Satzinhalt & "Einzelpreis = " & rs.Fields(5)               
        Satzinhalt = Satzinhalt  & vbCrLf
        Satzinhalt = Satzinhalt & "Lagerbest. = " & rs.Fields(6)        
        Satzinhalt = Satzinhalt  & vbCrLf
        Satzinhalt = Satzinhalt & "Bestellt = " & rs.Fields(7)
        Satzinhalt = Satzinhalt  & vbCrLf
        Satzinhalt = Satzinhalt & "Mindestbest. = " & rs.Fields(8)      
        Satzinhalt = Satzinhalt  & vbCrLf
        Satzinhalt = Satzinhalt & "Auslaufart. = " & rs.Fields(9)                   
        MsgBox Satzinhalt
Else
        MsgBox "Suchabfrage erfolglos"
End If
rs.Close
db.Close
End Sub