2016-11-23 3 views
0

Ich versuche, die Nummer in einer geschlossenen Excel-Arbeitsmappe mit ADO zu ändern. Ich habe den folgenden Code von L42 im Jahr 2015 gefunden. Die Prozedur wird jedoch mit dem Fehler "Kein Wert für einen oder mehrere erforderliche Parameter" beendet. Ich kann nicht finden, wo etwas fehlt!Schreiben/Aktualisieren von Daten über ADO zu geschlossener Excel-Arbeitsmappe

Sub ChangeNum() 
Dim con As ADODB.Connection, rec As ADODB.Recordset 
Dim sqlstr As String, datasource As String 
    Set con = New ADODB.Connection: Set rec = New ADODB.Recordset 
    datasource = "D:\DropBox\TraderShare\TraderNum.xlsx" 
Dim sconnect As String 
    sconnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
      "Data Source=" & datasource & ";" & _ 
      "Extended Properties=""Excel 12.0 Xml;HDR=YES"";" 
    con.Open sconnect 
    sqlstr = "UPDATE [Sheet1$] SET [Number] = ""16900"" WHERE [ID] = INum" 
    rec.Open sqlstr, con, adOpenUnspecified, adLockUnspecified 'adLockOptimistic , adOpenStatic, adLockReadOnly 
    con.Close 
    Set rec = Nothing: Set con = Nothing 
End Sub 

Dankbar für jede Hilfe!

Antwort

0

Der übliche Grund für diesen Fehler ist ein fehlender oder falsch geschriebener Wert. Ich würde speziell über die SQL-Anweisung gehen und sehen, was los ist

+0

Ja, Doug, genau darum bitte ich. Aber ich habe sehr wenig Kenntnisse in SQL und ADO, der Grund, warum ich um Hilfe frage! Wie Sie sehen, gibt es ein paar Zeilen Code und die Schreibweise ist natürlich was ich zuerst überprüft habe. Der Fehler wird bei "rec.Open sqlstr, con, adOpenUnspecified, adLockUnspecified ausgelöst. Ich kann nicht mehr ** erforderliche ** Parameter für die Open-Anweisung finden. –

1

Ich habe den Fehler gefunden! Der sqlstr sollte geschrieben werden:

sqlstr = "UPDATE [Sheet1$] SET [Number] = ""16900"" WHERE [ID] = ""INum""" 

Es ist das Ausrufezeichen, das zählt! Ich weiß nicht, warum es auf diese Weise erforderlich ist, wenn die Ausrufezeichen erforderlich sind, um verschiedene Teile der Zeichenfolge zu verketten. Aber sie scheinen nicht in der richtigen Reihenfolge zu sein, am Ende gibt es 1 zu viel!

+0

Ausrufezeichen würden einen Unterschied machen ... aber Sie waren Anführungszeichen gemeint , die wahrscheinlich einen größeren Unterschied machen Gute Arbeit bei der Beantwortung Ihrer eigenen Frage. – CWilson