Recordset in Excel

Bild

Betrifft: Recordset in Excel
von: Ohlrich
Geschrieben am: 26.06.2015 15:56:22

Hallo Community,
ich habe folgendes Problem.
Ich bekomme einen Automatisierungsfehler 80040e14 bei folgender Zeile und verstehe nicht weshalb.


Dim cn As ADODB.Connection
Dim rst As New ADODB.Recordset
Dim cmd As New ADODB.Command
Set cn = New ADODB.Connection
With cn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Data Source=E:\Dokumente\Excel\Artikelliste\Artikelliste_2015.xls;" &  _
_
"Extended Properties=Excel 8.0;"
    .Open
End With
Set rst = New ADODB.Recordset
Dim strSQL As String
strSQL = "SELECT * FROM [Artikelliste$]"
'rst.Open "Artikelliste", cn, adOpenDynamic
With rst
  .Source = strSQL
  .ActiveConnection = cn
  .Open 'hier tritt der Fehler auf
End With
Mein Ziel ist es eine Verbindung zu einer anderen Excel-Datei aufzubauen. Danach ein Recordset aufgrund von durch SQL gefilterten Daten aus dem externen Tabellenblatt zu erstellen und danach stelle ich ein paar schöne Dinge mit dem Recordset an.
Meine Google-Suche hat bisher ergeben, dass der Fehler wohl aufgrund des SQL-String käme. Habe diverse Möglichkeiten ausprobiert, inklusive anderem Vorgehen bei dem erstellen des Recordsets. Bisher alles ohne Erfolg.
Bin für jeden Hinweis dankbar.

Bild

Betrifft: AW: Recordset in Excel
von: Luschi
Geschrieben am: 26.06.2015 18:38:13
Hallo Ohlrich,
ich mach das immer so:


Sub testADODB()
    Dim cn As Object
    Dim rst As Object
    Dim strSQL As String
    Dim xDatei As String
    
    'es ist kein Verweis gesetzt zu ADODB (Early Binding)
    'Late Binding
    'dadurch ist gewährleistet, daß immer der gerade neueste installierte
    'ADO-Treiber angewendet wird
    Set cn = CreateObject("ADODB.Connection")
    Set rst = CreateObject("ADODB.Recordset")
    
    xDatei = "G:\Daten\Excel\E_2010\PowerPivot\Beispiel_01\05_05_Artikel.xls"
    
    'xDatei = "G:\Daten\Excel\E_2010\PowerPivot\Beispiel_01\05_05_Artikel.xls"
    'xDatei = "G:\Daten\Excel\E_2010\PowerPivot\Beispiel_01\05_05_Artikel.xlsx"
    xDatei = "G:\Daten\Excel\E_2010\PowerPivot\Beispiel_01\05_05_Artikel.xlsm"
    
    With cn
        'für xls-Dateien E_97 bis E_2003
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source=" & xDatei & ";" & _
                            "Extended Properties=""Excel 8.0;HDR=YES;IMEX=1"""
                            'HDR=NO - wenn keine Überschriften im Bereich 
                            
    '    'für xlsx-Dateien ab E_2007
    '    .Provider = "Microsoft.ACE.OLEDB.12.0"
    '    .ConnectionString = "Data Source=G:\Daten\Excel\E_2010\PowerPivot\Beispiel_01\ _
05_05_Artikel.xlsx;" & _
    '                        "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""
                            
    '    'für xlsm-Dateien ab E_2007
    '    .Provider = "Microsoft.ACE.OLEDB.12.0"
    '    .ConnectionString = "Data Source=G:\Daten\Excel\E_2010\PowerPivot\Beispiel_01\ _
05_05_Artikel.xlsx;" & _
    '                        "Extended Properties=""Excel 12.0 Macro;HDR=YES;IMEX=1"""
        
        .Open
    End With
    
    
    
    '- Artikel ist der Tabellenname in der Exceldatei
    strSQL = "SELECT * FROM [Artikel$];"
    With rst
      .Source = strSQL
      .ActiveConnection = cn
      .Open 'hier tritt der Fehler auf
    End With
    
    Tabelle1.Cells.Clear
    'Datenübernahme
    Tabelle1.Range("A1").CopyFromRecordset rst
    
    rst.Close
    cn.Close
    
    Set rst = Nothing
    Set cn = Nothing
End Sub
Gruß von Luschi
aus klein-Paris

Bild

Betrifft: AW: Recordset in Excel
von: Ohlrich
Geschrieben am: 29.06.2015 09:26:10
Ha, großartig =)
Habe mich selbst ausgetrickst, indem ich die Endung der Exceldatei nicht komplett kopiert hatte und so aus xlsm nur xls wurde.
Danke für die Hilfe.

 Bild

Beiträge aus den Excel-Beispielen zum Thema "mehrere selektierte Listboxelemente löschen"