Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler -2147467259

Forumthread: Laufzeitfehler -2147467259

Laufzeitfehler -2147467259
30.06.2014 08:33:03
Tom
Hallo,
ich bekomme immer wieder mal den Laufzeitfehler -2147467259
Im Debug Modus wird mir die Zeile cnMDB.Open sAdoConnectString markiert.
Hat jemand eine Idee woher das kommt? Irgendwie hat der ODBC-Treiber einen schlag oder?!
Fehlermeldung:
Userbild
Option Explicit
'ab xl2007
Private Const cProvider As String = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ="
Private cnMDB As Object ' oder ADODB.Connection -> 'Verweis auf: Microsoft ActiveX Data Objects ...
Private adoRS As Object ' oder ADODB.Recordset -> 'Verweis auf: Microsoft ActiveX Data Objects ...
Private Sub Close_Datenbank()
On Error Resume Next
adoRS.Close
Set adoRS = Nothing
cnMDB.Close
Set cnMDB = Nothing
End Sub

Private Sub ADO_Connect(strFile$)
Dim sPath$, sAdoConnectString$
Set cnMDB = CreateObject("ADODB.Connection") '
'1. Version so
sAdoConnectString = cProvider & strFile
cnMDB.Open sAdoConnectString
End Sub

Private Sub Oben_Recordset(ByVal strSQL$)
Set adoRS = CreateObject("ADODB.Recordset")
With adoRS
.ActiveConnection = cnMDB
.CursorLocation = 3
.CursorType = 2
.LockType = 3
.Open strSQL
End With
End Sub
Function oExAbfrage(ByVal strFile$, ByVal sTabAndRange$, Optional booCloseDB As Boolean = False)
Dim strSQL$, arValues(), n&, nCounter&
If cnMDB Is Nothing Then ADO_Connect strFile
If cnMDB Is Nothing Then GoTo ErrorConnect 'Error
strSQL = "SELECT * FROM [" & sTabAndRange$ & "]"
If adoRS Is Nothing Then
Oben_Recordset strSQL
If adoRS Is Nothing Then GoTo ErrorConnect 'Error
End If
With adoRS
If Not .BOF Then
ReDim Preserve arValues(1 To 1, 1 To .Fields.Count)
For n = 0 To .Fields.Count - 1
If .Fields(n) "" Then nCounter = nCounter + 1: arValues(1, nCounter) = .Fields(n).Value
Next n
ReDim Preserve arValues(1 To 1, 1 To nCounter)
oExAbfrage = Application.Transpose(arValues)
End If
End With
If booCloseDB Then Close_Datenbank
Exit Function
ErrorConnect:
Close_Datenbank
oExAbfrage = "Error"
End Function
gruß Tom

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler -2147467259
30.06.2014 10:33:48
Nepumuk
Hallo,
ein Beispiel das funktioniert:
Public Sub adoX5()
    
    Dim objRecordset As Object
    Dim objConnection As Object
    Dim strConnection As String
    Dim strWorkbook As String, strWorksheet As String
    
    strWorkbook = "D:\Mappe1.xls"
    strWorksheet = "Tabelle1"
    
    Set objRecordset = CreateObject("ADODB.recordset")
    Set objConnection = CreateObject("ADODB.Connection")
    
    strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "Data Source=" & strWorkbook & ";" & _
        "Extended Properties=""Excel 12.0;HDR=Yes;IMEX=0"""
    
    objConnection.Open strConnection
    
    Set objRecordset = objConnection.Execute("SELECT * FROM [" & strWorksheet & "$]")
    
    ' With Tabelle4
    '
    ' .UsedRange.Clear
    '
    ' .Cells(1, 1).CopyFromRecordset objRecordset
    '
    ' End With
    
    objRecordset.Close
    objConnection.Close
    
    Set objRecordset = Nothing
    Set objConnection = Nothing
    
End Sub

Gruß
Nepumuk
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Laufzeitfehler -2147467259 in VBA beheben


Schritt-für-Schritt-Anleitung

  1. ODBC-Treiber überprüfen: Stelle sicher, dass der ODBC-Treiber für Excel korrekt installiert ist. Der Fehler -2147467259 kann häufig auf ein Problem mit dem Treiber hinweisen.

  2. Verbindung zur Datenbank aufbauen: Nutze den folgenden VBA-Code, um eine Verbindung zu einer Excel-Datei herzustellen:

    Private Sub ADO_Connect(strFile$)
       Dim sAdoConnectString$
       Set cnMDB = CreateObject("ADODB.Connection")
       sAdoConnectString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & strFile
       cnMDB.Open sAdoConnectString
    End Sub
  3. Debug Modus aktivieren: Führe den Code im Debug Modus aus, um zu sehen, an welcher Stelle der Laufzeitfehler -2147467259 auftritt. Dies hilft, die Ursache einzugrenzen.

  4. Fehlerbehandlung implementieren: Füge eine Fehlerbehandlung in deinem Code hinzu, um den Fehler besser zu erkennen:

    On Error GoTo ErrorHandler
    ' Dein Code hier
    Exit Sub
    ErrorHandler:
       MsgBox "Fehler: " & Err.Description

Häufige Fehler und Lösungen

  • Falscher Dateipfad: Überprüfe, ob der Pfad zur Excel-Datei korrekt ist. Ein ungültiger Pfad kann den Laufzeitfehler -2147467259 auslösen.

  • Inkompatibler ODBC-Treiber: Stelle sicher, dass der verwendete ODBC-Treiber mit deiner Excel-Version kompatibel ist. Manchmal kann die Verwendung eines veralteten Treibers zu Problemen führen.

  • Fehlende Berechtigungen: Überprüfe, ob Du die notwendigen Berechtigungen hast, um auf die Excel-Datei zuzugreifen.


Alternative Methoden

  • OLEDB verwenden: Statt ODBC kannst Du auch OLEDB verwenden. Hier ein Beispiel für den Code:

    Dim objConnection As Object
    Set objConnection = CreateObject("ADODB.Connection")
    strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strWorkbook & ";Extended Properties='Excel 12.0;HDR=Yes;'"
    objConnection.Open strConnection
  • Verwendung von ADO: ADO kann eine einfachere Alternative zur direkten Excel-Verbindung sein. Stelle sicher, dass Du die richtigen Verweise in deinen VBA-Projektoptionen gesetzt hast.


Praktische Beispiele

Hier ist ein funktionierendes Beispiel zur Verwendung von ADO in VBA:

Public Sub adoX5()
    Dim objRecordset As Object
    Dim objConnection As Object
    Dim strConnection As String
    Dim strWorkbook As String, strWorksheet As String

    strWorkbook = "D:\Mappe1.xls"
    strWorksheet = "Tabelle1"

    Set objRecordset = CreateObject("ADODB.Recordset")
    Set objConnection = CreateObject("ADODB.Connection")

    strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strWorkbook & ";Extended Properties='Excel 12.0;HDR=Yes;'"
    objConnection.Open strConnection

    Set objRecordset = objConnection.Execute("SELECT * FROM [" & strWorksheet & "$]")

    ' Hier kannst Du deine Daten verarbeiten
    objRecordset.Close
    objConnection.Close
    Set objRecordset = Nothing
    Set objConnection = Nothing
End Sub

Tipps für Profis

  • Verwendung von Option Explicit: Immer Option Explicit am Anfang deiner Module verwenden, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Laufzeitfehler zu vermeiden.

  • Debugging-Tools nutzen: Nutze die integrierten Debugging-Tools von VBA, um den Code Schritt für Schritt zu durchlaufen und den Zustand der Variablen zu beobachten.

  • Regelmäßige Backups: Halte regelmäßige Backups deiner Excel-Dateien und VBA-Projekte. So kannst Du im Fehlerfall immer auf eine funktionierende Version zurückgreifen.


FAQ: Häufige Fragen

1. Was bedeutet der Fehler -2147467259?
Der Fehler -2147467259 deutet häufig auf ein Problem mit der Verbindung zu einer Datenquelle hin, z.B. aufgrund eines falschen Treibers oder eines ungültigen Dateipfades.

2. Wie kann ich den Laufzeitfehler im Debug Modus beheben?
Im Debug Modus kannst Du den Code Schritt für Schritt durchgehen und die genaue Zeile identifizieren, die den Fehler verursacht. Nutze auch Fehlerbehandlungsroutinen, um mehr Informationen über den Fehler zu erhalten.

3. Welche Excel-Version wird benötigt?
Die Beispiele in diesem Tutorial sind ab Excel 2007 und höher kompatibel, da sie die neuen Treiber und die ADO-Bibliothek nutzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige