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

PProvider Microsoft.ACE.OLEDB.12.0;

Forumthread: PProvider Microsoft.ACE.OLEDB.12.0;

PProvider Microsoft.ACE.OLEDB.12.0;
14.12.2022 23:11:03
Alex
Hallo Leute
Ich möchte mit Sql eine geschlossene Arbeitsmapp ansprechen.
Das Programm schnauzt mich bei der Zeile cn.Open ständig mit dieser Fehlemeldung an: Die Methode 'Open' für das Objekt '_Connection' ist fehlgeschlagen
Der fehler liegt meiner Meinung nach im ConnectionsString, währe froh wen sich den einmal ansehen würde

Option Explicit
' Der Pfad zur Datei wurde abgeändert, da er ohne Relevanz ist
Private Const dbPath As String = "C:\DB.xlsm"
Private cn As New ADODB.Connection
Private cmd As New ADODB.Command
Private rs As New ADODB.Recordset
Private strCon As String
Public Sub ImportAddress()
strCon =  "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & dbPath & "';Extended Properties=""Excel 12.0;HDR=YES;IMEX=1;"";"
ADDRESS.Cells.ClearContents
On Error GoTo ERR_CONNECTECTION
cn.Open strCon
rs.ActiveConnection = strCon
'    rs.Source = "SELECT * FROM [ADDRESS$]"
rs.Open "SELECT * FROM [ADDRESS$]"
ADDRESS.Range("A1").CopyFromRecordset rs
rs.Close
cn.Close
Exit Sub
ERR_CONNECTECTION:
Debug.Print Err.Description
'Fehlermesdung; Die Methode 'Open' für das Objekt '_Connection' ist fehlgeschlagen
End Sub
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PProvider Microsoft.ACE.OLEDB.12.0;
15.12.2022 07:33:55
Oberschlumpf
Hi,
ich hab deine 2 Dateien nachgebaut - bei mir beide gespeichert in D:\
Mappe1.xlsm enthält deinen Code und Verweis auf MS ActiveX Data Objects 6.0 Library
DB.xlsm enthält ein Tabellenblatt, Name "ADDRESS"
In ADDRESS befindet sich eine intelligente Tabelle, Name auch "ADDRESS"
intell. Tab. enthält einen Datensatz
DB.xlsm ist geschlossen
Mappe1.xlsm ist geöffnet
Makro wird gestartet
nach Makroende enthält Tabelle in Mappe1.xlsm den einen DS aus geschlossener DB.xlsm
Grundsätzlich funktioniert also dein Makro.
Der Fehler ist irgdwoanders in deiner Datei.
hier mein Nachbau deiner Dateien
Mappe1.xlsm https://www.herber.de/bbs/user/156739.xlsm
DB.xlsm https://www.herber.de/bbs/user/156740.xlsm
Konnte ich helfen?
Ciao
Thorsten
Anzeige
ach so, ich nutze MSO 2016 - owT
15.12.2022 07:34:32
Oberschlumpf
auch in XL365 OK
15.12.2022 08:35:16
ChrisL
Hi
Sollte auch in XL365 Business funktionieren. Habe den folgenden Testcode verwendet. Abgesehen von LateBinding ist die Connection eigentlich gleich.

Sub t()
Dim cn As Object, rs As Object
Const scn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\Pfad\Mappe1.xlsm'" & _
";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"
Set cn = CreateObject("ADODB.Connection")
cn.Open scn
With Worksheets("Tabelle1")
Set rs = cn.Execute("SELECT * FROM [Tabelle1$]")
.Range("A1").CopyFromRecordset rs
End With
Set cn = Nothing
Set rs = Nothing
End Sub
cu
Chris
Anzeige
AW: PProvider Microsoft.ACE.OLEDB.12.0;
15.12.2022 08:49:54
Alex
Morgen Oberschlumpf
Ich glaube dass ich den Fehler gefunden habe.
Mit deinem Beispiel läuft der Code.
Wenn ich jedoch auf die Orginal-Datei die sich auf einem Sherpoint-Server befindet zugreiffen möpchte gehts nicht mehr.
Die Orginal-Datei befinedt sich auf: https://tschanzkaeltetechnik-my.sharepoint.com/personal/tschanz_tschanzkaeltetechnik_onmicrosoft_com/Documents/
Ist das kein gültiger Pfad?
Gruss Alex
Anzeige
AW: PProvider Microsoft.ACE.OLEDB.12.0;
15.12.2022 08:57:39
Oberschlumpf
Hi,
mit zugriff auf ShAREpoint-Server kenn ich mich leider nicht aus.
Obwohl ich schon vermute, dass genau so eine Pfadangabe von ADO vielleicht "nicht verstanden" wird - aber ich weiß das nicht, deshalb lass ich den Beitrag offen.
Ciao
Thorsten
AW: PProvider Microsoft.ACE.OLEDB.12.0;
15.12.2022 12:57:38
EtoPHG
Hallo Alex,
Das ist ein LINK (auf sharepoint, der z.b. über den Browser erreicht werden kann) und keine gültige DOS-Pfadangabe (die über VBA erreicht werden kann).
Um eine Connection auf ein Sharepoint Objekt erreicht werden kann ist ein Login/Authorization auf Sharepoint vorausgesetzt.
Siehe z.b. in diesem Tread aus dem Herber-Archiv.
Gruess Hansueli
Anzeige
;
Anzeige

Infobox / Tutorial

Verbindung zu Excel mit Microsoft.ACE.OLEDB.12.0 herstellen


Schritt-für-Schritt-Anleitung

Um eine Verbindung zu einer Excel-Datei mit VBA über OLEDB herzustellen, kannst du den folgenden Schritt-für-Schritt-Ansatz befolgen:

  1. Setup Deiner Umgebung: Stelle sicher, dass die Microsoft ActiveX Data Objects Library in deinem VBA-Projekt aktiviert ist. Gehe dazu in den VBA-Editor auf Extras -> Verweise und aktiviere die Microsoft ActiveX Data Objects x.x Library.

  2. Code vorbereiten: Verwende den folgenden Code als Basis für deine Verbindung zu einer geschlossenen Excel-Datei:

    Option Explicit
    Private Const dbPath As String = "C:\DeinPfad\DeineDatei.xlsm"
    Private cn As New ADODB.Connection
    Private cmd As New ADODB.Command
    Private rs As New ADODB.Recordset
    Private strCon As String
    
    Public Sub ImportData()
       strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & dbPath & "';Extended Properties='Excel 12.0;HDR=YES;IMEX=1';"
       On Error GoTo ERR_CONNECTION
       cn.Open strCon
       rs.Open "SELECT * FROM [DeinTabellenblatt$]"
       ' Hier kannst du die Daten weiterverarbeiten
       rs.Close
       cn.Close
       Exit Sub
    
    ERR_CONNECTION:
       Debug.Print Err.Description
    End Sub
  3. Daten importieren: Ändere den dbPath und den Tabellennamen entsprechend deiner Datei.


Häufige Fehler und Lösungen

  • Fehlermeldung: "Die Methode 'Open' für das Objekt '_Connection' ist fehlgeschlagen."

    • Lösung: Überprüfe den Connection-String. Achte darauf, dass der Pfad zur Datei korrekt ist und dass die Datei nicht geöffnet ist.
  • Fehler bei der Verbindung zu SharePoint:

    • Lösung: ADO kann möglicherweise keine SharePoint-Links verarbeiten. Stelle sicher, dass du einen gültigen Pfad verwendest, der von VBA erkannt wird. Möglicherweise musst du die Datei zuerst lokal speichern.

Alternative Methoden

Wenn du mit SharePoint arbeitest oder Probleme mit OLEDB hast, kannst du alternative Methoden in Betracht ziehen:

  • Excel-Objektmodell: Verwende das Excel-Objektmodell, um Daten zu importieren:

    Sub ImportDataUsingExcelObject()
       Dim wb As Workbook
       Set wb = Workbooks.Open("C:\DeinPfad\DeineDatei.xlsm")
       ' Hier kannst du die Daten verarbeiten
       wb.Close
    End Sub
  • Power Query: Nutze Power Query, um Daten aus Excel oder SharePoint zu importieren, was eine benutzerfreundliche Oberfläche bietet.


Praktische Beispiele

Hier sind einige praktische Beispiele für die Verwendung von OLEDB in VBA:

  • Daten aus einer Excel-Tabelle importieren:

    Sub ImportFromExcel()
       Dim cn As Object, rs As Object
       Const scn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\DeinPfad\DeineDatei.xlsm';Extended Properties='Excel 12.0;HDR=Yes;IMEX=1';"
       Set cn = CreateObject("ADODB.Connection")
       cn.Open scn
       Set rs = cn.Execute("SELECT * FROM [Tabelle1$]")
       ' Daten weiterverarbeiten
       cn.Close
       Set cn = Nothing
       Set rs = Nothing
    End Sub
  • Verbindung zu einer geschlossenen Datei: Der oben genannte Code demonstriert eine einfache Möglichkeit, Daten aus einer geschlossenen Datei zu importieren.


Tipps für Profis

  • Fehlersuche: Nutze die Debug.Print-Anweisung, um Fehlermeldungen in der unmittelbaren Fensterkonsole anzuzeigen.
  • Verwende die richtige Version: Stelle sicher, dass du die richtige Version von Microsoft.ACE.OLEDB installiert hast, insbesondere wenn du mit verschiedenen Excel-Versionen arbeitest.
  • Zugriffsrechte: Wenn du auf SharePoint zugreifen möchtest, stelle sicher, dass du die richtigen Berechtigungen hast und dass die Datei nicht nur im Browser zugänglich ist.

FAQ: Häufige Fragen

1. Was ist Microsoft.ACE.OLEDB.12.0?
Microsoft.ACE.OLEDB.12.0 ist ein OLE DB-Anbieter, der es ermöglicht, Daten aus Excel-Dateien über VBA zu lesen und zu schreiben.

2. Wie kann ich die Verbindung zu einer Excel-Datei testen?
Verwende den Code zum Öffnen der Verbindung und fange Fehler mit On Error ab, um zu sehen, ob es Probleme gibt.

3. Funktioniert dieser Code auch in Excel 365?
Ja, der Code ist kompatibel mit Excel 365 sowie anderen Versionen wie Excel 2016, solange die richtigen Bibliotheken installiert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige