Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1180to1184
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

Bei Excel 2007 mit ADO Laufzeitfehler

Bei Excel 2007 mit ADO Laufzeitfehler
Boris
Hallo,
vielleicht könnt ihr mir helfen, finde darüber nichts bei Google: Ich kopiere Daten aus einer Excel-Datei per ADODB. Wenn die Quelldatei in Excel 2003 abgespeichert ist (TelListe.xls) funktioniert das ganze, sobald die Quelldatei jedoch als Excel 2007 abgespeichert ist (TelListe.xlsx), kommt ein Laufzeitfehler mit der Meldung: Die externe Tabelle hat nicht das erwartete Format. Dies passiert jedoch nur, wenn die Quelldatei geschlossen ist. Bei geöffneter Datei funktioniert es.
Viele Grüße
Sub GetDBData()
Dim oRS As Object, oConn As Object
Dim sSql As String, sFData As String
sFData = ThisWorkbook.Path & "\TelListe.xlsx"
sSql = "SELECT * FROM Teilnehmer"
Set oConn = CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Excel 8.0;DATABASE=" & sFData
Set oRS = oConn.Execute(sSql)
ThisWorkbook.Worksheets("DB").Cells(4, 1).CopyFromRecordset oRS
oRS.Close
oConn.Close
Set oRS = Nothing
Set oConn = Nothing
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Bei Excel 2007 mit ADO Laufzeitfehler
22.10.2010 18:59:16
Josef

Hallo Boris,
probier's mal so.

Sub GetDBData()
  Dim oRS As Object, oConn As Object
  Dim sSql As String, sFData As String
  Dim strCon As String
  
  sFData = ThisWorkbook.Path & "\TelListe.xlsx"
  
  sSql = "SELECT * FROM Teilnehmer"
  
  Set oConn = CreateObject("ADODB.Connection")
  
  If Mid(sFData, InStrRev(sFData, ".") + 1) = "xls" Then
    strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" _
      & "Extended Properties=Excel 8.0;" _
      & "Data Source=" & sFData & ";"
  ElseIf Mid(sFData, InStrRev(sFData, ".") + 1) Like "xls?" Then
    strCon = "Provider=Microsoft.ACE.OLEDB.12.0;" _
      & "Extended Properties=""Excel 12.0;HDR=YES"";" _
      & "Data Source=" & sFData & ";"
  Else
    GoTo ErrExit
  End If
  
  oConn.Open strCon
  
  Set oRS = oConn.Execute(sSql)
  
  ThisWorkbook.Worksheets("DB").Cells(4, 1).CopyFromRecordset oRS
  
  ErrExit:
  On Error Resume Next
  oRS.Close
  oConn.Close
  Set oRS = Nothing
  Set oConn = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Bei Excel 2007 mit ADO Laufzeitfehler
25.10.2010 10:25:15
Boris
Hallo Josef,
das funktionert, vielen Dank. Ich frage mich allerdings, warum ACE bei einer Tabelle mit 8 Spalten und 25.000 Zeilen ca. doppelt so lange braucht (geschätzte 2 vs 4 Sekunden).
Viele Grüße
Boris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige