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.
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