Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

ADODB Daten aus verknüpfter Exceltabelle löschen


Betrifft: ADODB Daten aus verknüpfter Exceltabelle löschen von: Mike
Geschrieben am: 25.09.2019 09:42:18

Hallo zusammen,

ich möchte gern Daten via Recordset aus einer verknüpften Exceltabelle löschen.

Zunächst baue ich eine Verbindung auf. Danach den entsprechenden Recordset. Wenn ich dann im Weiteren Recordset.Delete verwende oder auch eine Löschabfrage (SqlAbfrg = "DELETE* FROM [ZoomWerte$A3:K]" erhalte ich stets die gleiche Fehlermeldung: "ISAM unterstützt das Löschen von Daten in einer verknüpften Tabelle nicht."

Nun habe ich schon viel recherchiert und hatte die Aussagen gefunden, dass das Löschen von Daten eines Recordsets über ADODB nicht unterstützt wird. Man könne anstatt dessen den Inhalt der einzelnen Felder löschen. Auch das hatte ich versucht erhielt aber immer nach dem Löschen von mehreren Feldern die Fehlermeldung: "Fehler bei einem aus mehreren Schritten bestehenden Vorgang. Prüfen Sie die einzelnen Statuswerte."

Access kann ich nicht verwenden, da es im Unternehmen nicht eingesetzt wird. Die Excel-Datendatei verdeckt zu starten, dann die Daten löschen und die Datei wieder zu schließen wäre für mich nicht so wirklich eine Option.

Hätte jemand da noch eine Lösungsmöglichkeit?

Vielen Dank!

Option Explicit

Public AdoCon As Object
Public ZoomRSet As Object

Dim SqlAbfrg As String


Function ADO_Verbindung()

101 Dim DateiSuObj As Object

102 Const TabName = ""
103 Const ModName = "A_SQL_DatenBezug"
104 Const ProzName = "ADO_Verbindung"
105 Const FehlerKat = 2

106 On Error GoTo Fehler
    
   'Sql-Verbindung aufbauen
108 Set AdoCon = CreateObject("ADODB.CONNECTION")
 
With AdoCon
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .Properties("Data Source") = ActiveWorkbook.path & "\AnalyticsDaten.xlsm"
    .Properties("Extended Properties") = "Excel 12.0;HDR=NO"
    .CursorLocation = 3 'adUseClient
    .Mode = 3 '16 = adModeShareDenyNone // 3 = adModeReadWrite
    .Open
End With

111 If AdoCon.State = 0 Then  'Die Verbindung "SQL_Connection" ist nicht geöffnet worden

112   MsgBox "Die SQL-Verbindung konnte nicht geöffnet" & Chr(13) & _
             "werden. Das Programm kann daher nicht" & Chr(13) & _
             "gestartet werden. Bitte wenden Sie sich an" & Chr(13) & _
             "den Administrator des Programms."

113 End If

114 Exit Function

115 Fehler:

116 If AdoCon.State = 1 Then  'Die Verbindung "SQL_Connection" ist geöffnet
    
117   AdoCon.Close
118   Set AdoCon = Nothing

119 End If
    
120 Call Fehler_Aufz(TabName, ModName, ProzName, FehlerKat)

End Function
Function ZoomWerte_RSet()

100 Const TabName = ""
101 Const ModName = "A_SQL_DatenBezug"
102 Const ProzName = "ZoomWerteRSet"
103 Const FehlerKat = 2

104 On Error GoTo Fehler

105 Set ZoomRSet = CreateObject("ADODB.RECORDSET")

    'Daten aus der ZoomWerte-Tabelle abfragen
106 SqlAbfrg = "SELECT * FROM [ZoomWerte$A3:K]"

107 With ZoomRSet
    
108   .Source = SqlAbfrg
109   .ActiveConnection = AdoCon
110   .CursorLocation = 3 'adUseClient
111   .CursorType = 1 '1 = adOpenKeyset  //  2 = adOpenDynamic  // 3 = adOpenStatic
112   .LockType = 3 '3 = adLockOptimistic  // 4 = adLockBatchOptimistic
113   .Open
114   .MoveFirst

115 End With

116 Exit Function

117 Fehler:
   
    'Einstellungen-Recordset schließen
118 If Not ZoomRSet Is Nothing Then
    
119   If ZoomRSet.State And 1 = 1 Then
         
120      ZoomRSet.Close
121      Set ZoomRSet = Nothing
         
122   End If

123 End If

124 Call Fehler_Aufz(TabName, ModName, ProzName, FehlerKat)

End Function

  

Betrifft: AW: ADODB Daten aus verknüpfter Exceltabelle löschen von: EtoPHG
Geschrieben am: 25.09.2019 14:27:05

Hallo Mike,

Zitat: Die Excel-Datendatei verdeckt zu starten, dann die Daten löschen und die Datei wieder zu schließen wäre für mich nicht so wirklich eine Option.

Es ist aber die Einzige, die funktioniert, den der Treiber für XL lässt keine anderen Manipulationen am Dateninhalt zu, ausser den erwähnten.

Gruess Hansueli


Beiträge aus dem Excel-Forum zum Thema "ADODB Daten aus verknüpfter Exceltabelle löschen"