Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1200to1204
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zugriff per SQL auf Excel-Sheet

Zugriff per SQL auf Excel-Sheet
Armin
Hallo,
ich verwende den nachfolgenden Code, um per SQL auf eine Excel-Tabelle zuzugreifen. Ziel soll sein, das Feld Value mit dem Wert 1 upzudaten.
Sub Excel_Sheet_aktulisieren()
Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset
Set conn = New ADODB.Connection
Set rst = New ADODB.Recordset
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\tmp\Test.xlsm;" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"";"
rst.Open "SELECT DISTINCT * FROM [Tabelle1$] where Monat = 'November' and Jahr = 2009" _
, conn, adOpenKeyset, adLockOptimistic, adCmdText
Do Until rst.EOF
Debug.Print rst.Fields.Item("Name")
rst.Fields.Item("Value") = 1
rst.Update
rst.MoveNext
Loop
End Sub
Wenn ich den Code ausführe, kommt es aber zur Fehlermeldung in der Zeile "rst.Fields.Item("Value") = 1
Die Fehlermeldung lautet:
Aktualisieren nicht möglich; Datenbank oder Objekt ist schreibgeschützt. -214721911 (80040e09)
Hat jemand eine Idee, wie sich das Problem lösen lässt?
Vielen Dank
Armin

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zugriff per SQL auf Excel-Sheet
22.02.2011 21:20:57
Josef

Hallo Armin,
probier es mal so.
Sub Excel_Sheet_aktulisieren()
  Dim Path As String
  Dim conn As ADODB.Connection
  Dim rst As ADODB.Recordset
  
  Path = "C:\tmp\Test.xlsm"
  
  Set conn = New ADODB.Connection
  Set rst = New ADODB.Recordset
  
  If Mid(Path, InStrRev(Path, ".") + 1) = "xls" Then
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
      & "Extended Properties=Excel 8.0;" _
      & "Data Source=" & Path & ";"
  ElseIf Mid(Path, InStrRev(Path, ".") + 1) Like "xls?" Then
    conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" _
      & "Extended Properties=""Excel 12.0;HDR=YES"";" _
      & "Data Source=" & Path & ";"
  Else
    Exit Sub
  End If
  
  rst.Open "SELECT DISTINCT * FROM [Tabelle1$] where Monat = 'November' and Jahr = 2009" _
    , conn, adOpenKeyset, adLockOptimistic, adCmdText
  
  Do Until rst.EOF
    Debug.Print rst.Fields.Item("Name")
    rst.Fields.Item("Value") = 1
    rst.Update
    rst.MoveNext
  Loop
  
End Sub


Gruß Sepp

Anzeige
AW: Zugriff per SQL auf Excel-Sheet
23.02.2011 07:58:52
Armin
Hallo Sepp,
vielen Dank für die Info. Aber ich komme zum gleichen Ergebnis. Die Fehlermeldunt erscheint nach wie vor bei rst.Fields.Item("Value") = 1
Kann es daran liegen, dass ich auch die geöffnete DB sprich Excel-Tabelle so nicht zugreiffen kann? Liegt es evtl. an Verweisen, die gesetzt werden müssen oder an Sicherheitseinstellungen? Ich verwende gerade XP mit Office 2003. Muss evtl. der Ordner freigegeben werden, habe damit auch schon probiert, aber ohne Erfolg.
Viele Grüße
Armin
AW: Zugriff per SQL auf Excel-Sheet
23.02.2011 09:17:19
Jürgen
Hallo Armin,
kann es sein, das Du eigentlich
rst.Fields("Name").value = 1
meintest (wobei "Name" der Spaltenname ist)?
Gruß, Jürgen
Anzeige
AW: Zugriff per SQL auf Excel-Sheet
23.02.2011 09:32:15
Armin
Hallo Jürgen,
vielen Dank für den Tipp. Aber die Spalte heisst zufällig auch "Value". Wenn ich es mit dem Vorschlag von dir probiere: rst.Fields("Value").Value = 1 erhalte ich leider die gleiche Fehlermeldung bezüglich Schreibschutz.
An was könnte es noch liegen?
Viele Grüße
Armin

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige