LZF 424 Objekt erforderlich

Hallo,

bei folgendem Code in excel2003 tritt o.g. Fehler auf:

Sub ConnectExcel()
Dim cnn As New Connection, rs As New Recordset
Dim strSql As String, str1 As String
'On Error Resume Next
cnn.Open „Provider=Microsoft.Jet.OLEDB.4.0;“ & „Extended Properties=Excel 8.0;“ & „Data Source=“ & ThisWorkbook.FullName
str1 = Sheet3.Range(„B1“) 'HIER TRITT DER LZF AUF!!!

strSql = „select [Artikelname],[Prinz EAN-Code],[Artikelbezeichnung],[Abmessung und Farbe],[€ / St. Netto ab 01.02.2013] from [Tab1$] where [Deb]=“ & str1
rs.Open strSql, cnn, adOpenStatic

Sheet3.Range(„a4:e1000“).ClearContents
Sheet3.Range(„A4“).CopyFromRecordset rs
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub

Danke für Eure Hilfe.
Gruss Thomas

Nachfragen
Hallo Thomas,

welche Verweise muß man da setzen?
Existiert ein Blatt was den Codenamen „Sheet3“ hat?
Das ist NICHT der Name der in Excel unten angezeigt wird.

Gruß
Reinhard

Guten morgen Reinhard,

vielen Dank für Deine Reaktion.

Dein Hinweis auf den Codenamen „Sheet3“ war goldrichtig. Der Code ist nämlich mit einer englischen Excel-Version geschrieben worden. Die Datei, in der ich den Code kopiert habe, ist jedoch eine deutsche Excel-Version.

Allerdings läuft der Code jetzt auf den nächsten Fehler. Die Meldung lautet:

LZF ‚-2147217900 (80040e14)‘: Syntaxfehler (fehlender Operator) in Abfrageausdruck ‚[Deb]=‘

Interessanterweise tritt der Fehler in der darauffolgenden Zeile auf. Hier noch mal der Code mit dem Hinweis:
Sub ConnectExcel()
Dim cnn As New Connection, rs As New Recordset
Dim strSql As String, str1 As String
'On Error Resume Next
cnn.Open „Provider=Microsoft.Jet.OLEDB.4.0;“ & „Extended Properties=Excel 8.0;“ & „Data Source=“ & ThisWorkbook.FullName
str1 = Tabelle1.Range(„B1“)
strSql = „select [Artikelname],[Prinz EAN-Code],[Artikelbezeichnung],[Abmessung und Farbe],[€ / St. Netto ab 01-02-2013] from [Tab1$] where [Deb]=“ & str1
rs.Open strSql, cnn, adOpenStatic HIER TRITT DER LZF AUF !!!

Tabelle1.Range(„a4:e1000“).ClearContents
Tabelle1.Range(„A4“).CopyFromRecordset rs
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub

Danke für Deine Hilfe.
Thomas

Moin Thomas,

Allerdings läuft der Code jetzt auf den nächsten Fehler. Die
Meldung lautet:

LZF ‚-2147217900 (80040e14)‘: Syntaxfehler (fehlender
Operator) in Abfrageausdruck ‚[Deb]=‘

klingt für mich danach, dass da der Vergleichsausdruck fehlt.
Wenn in B1 nichts steht, endet der Query-String mit dem ‚=‘. Wenn denn ein String in str1 steht (was ich mal erwarten würde), dann versuch es mit:

… „where [Deb]=’“ & str1 & „’“

Ist aber nur eine Idee!

VG,
Micha

Moin, Moin, (kommst Du aus dem Norden?)

wieder ein guter Hinweis. Ich hatte den Tabellenbezug falsch gesetzt.
Danke.

Ich flipp aus, jetzt kommt die folgende Meldung in der gleichen Zeile:

LZF ‚-2147217900 (80040e14)‘: Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben.

Das kann sich nur um ein kleines Problem handeln, was auf meine mangelnde Erfahrung schließen läßt.

Was passiert genau in der Zeile

rs.Open strSql, cnn, adOpenStatic?

Danke nochmals.

Thomas

Hallo noch mal,
ich hab den Fehler gefunden: In der Quelltabelle, aus der die Daten gezogen werden, begann in der zweiten Spalte und nicht in der ersten.

Danke erst einmal bis hierher. Ich wünsche Dir einen schönen Tag.
Thomas

Hi Thomas,

verhältnismäßig (Bremen).

Ich vermute, der Befehl führt die Datenbankanfrage über cnn aus und gibt ein nicht veränderbares Datensatzobjekt zurück.

Hinter jedem Gleichheitszeichen der Query muss ein Wert stehen (bool vielleicht nicht), und wenn es nur ein Leerstring ““ ist.

Lass sie Dir im Zweifelsfall ausgeben mit
Msgbox str1

Grüße,
Micha