Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Einbinden von Objektbibliotheken per VBA

Forumthread: Einbinden von Objektbibliotheken per VBA

Einbinden von Objektbibliotheken per VBA
03.05.2023 10:54:48
Goody

Guten Tag zusammen,
ich habe ein Problem mit dem Einbinden von Objektbibliotheken. Ich erzeuge per Makro (ausgehend von einem Prototyp) neue Excelfiles. In diesen soll dann ebenfalls per Makro eine Datenbank abgefragt werden. Hierzu benötigt man die DAO 360 Objektbibliothek. Diese müsste ich bei jedem File einzeln und von Hand einbinden. Ist es möglich das direkt bei der Erstellung des Files oder später per VBA-Code zu tun, da die entsprechenden Dateien von drei bis vier Kollegen genutzt werden, die alle nicht sonderlich technikaffin sind. Vielen Dank. P.S. Ich habe nach dem Begriff "Objektbibliothek" bereits im Forum gesucht und nichts gefunden. Falls es zu diesem Thema bereits einen Beitrag gibt, habe ich ihn wohl übersehen...

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einbinden von Objektbibliotheken per VBA
03.05.2023 11:56:08
Nepumuk
Hallo,

so:

Public Sub test3()
    Call ThisWorkbook.VBProject.References.AddFromFile(FileName:= _
        "C:\Program Files (x86)\Common Files\Microsoft Shared\DAO\dao360.dll")
End Sub
Gruß
Nepumuk


AW: Einbinden von Objektbibliotheken per VBA
03.05.2023 13:41:22
Goody
Hallo Nepumuk,
vielen Dank für die prompte Hilfe. Das Problem besteht nun nicht mehr. Ich bin zwar auch schon im Internet auf die AddFromFile-Methode gestoßen, aber ich habe nie die richtige Syntax zusammenbekommen.
Ich führe in meinem Sub deine Codezeile aus und rufe dann den eigentlichen Code als Funktion auf, das funktioniert wunderbar. Nochmals vielen Dank


Anzeige
AW: Einbinden von Objektbibliotheken per VBA
04.05.2023 17:50:21
Luschi
Hallo Goody,

bei DAO in Excel Vba nutze ich 'Late Binding' :
Dim DAO_120 As Object
Set DAO_120 = CreateObject("DAO.DBEngine.120")

Damit nutze ich aber nicht die von Nepumuk empfohlene dao360.dll sondern die
C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE16\ACEDAO.DLL

Man kann sie aber auch als Verweis einbinden, dann sieht man sie in der Verweisübersicht als 'Microsoft Office 16.0 Access Database Engine ObjectLibrary'
Diese Bibliothek wurde mit Access 2007 für DAO neu eingeführt, nachdem M$ eigentlich diese Datenzugriffsmethode schon für tot erklärt hatte und machte sie gleich zum Standardzugriff in Access und ADODB wurde wieder aufs Nebengleis geschoben (einmal Hü und dann wiedere Hott).
Die ursprüngliche dao360.dll nutzt man in 'Late Binding' so:
Set DAO_36 = CreateObject("DAO.DBEngine.36"); also ohne die '0' in der Zahl

Gruß von Luschi
aus klein-Paris


Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Einbinden von Objektbibliotheken per VBA


Schritt-für-Schritt-Anleitung

Um eine VBA Bibliothek, wie die DAO 360 Objektbibliothek, in Dein Excel-Projekt einzubinden, folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Referenzen hinzufügen:

    • Gehe zu Extras > Verweise.
    • Suche nach der gewünschten Bibliothek, z.B. "Microsoft Office 16.0 Access Database Engine ObjectLibrary" oder "dao360.dll".
    • Aktiviere die Checkbox neben der Bibliothek und klicke auf OK.
  3. VBA-Code zum Einbinden verwenden:

    • Du kannst auch die AddFromFile-Methode verwenden, um die Bibliothek programmgesteuert hinzuzufügen. Füge diesen Code in ein Modul ein:
      Public Sub BibliothekEinbinden()
       Call ThisWorkbook.VBProject.References.AddFromFile(FileName:= _
           "C:\Program Files (x86)\Common Files\Microsoft Shared\DAO\dao360.dll")
      End Sub
  4. Verwendung der DAO Objektbibliothek:

    • Um DAO-Objekte zu verwenden, kannst Du beispielsweise CreateObject nutzen:
      Dim dbEngine As Object
      Set dbEngine = CreateObject("DAO.DBEngine.120")

Häufige Fehler und Lösungen

  • Fehler: "Kann die Bibliothek nicht finden":

    • Überprüfe den Pfad zur DLL-Datei. Stelle sicher, dass die Datei tatsächlich vorhanden ist.
  • Fehler: "Objekt nicht gefunden":

    • Vergewissere Dich, dass die richtige Version der DAO-Bibliothek (z.B. dao.dbengine.120 oder dao.dbengine.36) eingebunden ist.
  • Lösung für unzureichende Berechtigungen:

    • Manchmal sind Administratorrechte erforderlich, um auf die DLL-Dateien zuzugreifen. Starte Excel als Administrator.

Alternative Methoden

Falls die manuelle Einbindung nicht funktioniert oder Du eine automatisierte Lösung bevorzugst, kannst Du auch folgende Methoden verwenden:

  • Late Binding:

    • Anstatt die Bibliothek direkt einzubinden, kannst Du Late Binding nutzen, indem Du die Bibliothek zur Laufzeit erzeugst:
      Dim DAO_120 As Object
      Set DAO_120 = CreateObject("DAO.DBEngine.120")
  • Verwendung von Access:

    • Wenn Du Zugriff auf Microsoft Access hast, kannst Du auch dort die DAO-Bibliothek einbinden und die notwendigen Datenzugriffe direkt in Access durchführen.

Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du die DAO-Bibliothek in Deinen Makros verwenden kannst:

  1. Einfaches Öffnen einer Datenbank:

    Dim db As Object
    Set db = CreateObject("DAO.DBEngine.120").OpenDatabase("C:\Pfad\zu\DeinerDatenbank.accdb")
  2. Daten abfragen:

    Dim rs As Object
    Set rs = db.OpenRecordset("SELECT * FROM Tabelle")
    Do While Not rs.EOF
       Debug.Print rs.Fields(0).Value
       rs.MoveNext
    Loop
    rs.Close
    db.Close

Tipps für Profis

  • Vermeide Hardcodierung von Pfaden:

    • Verwende Umgebungsvariablen oder Konfigurationsdateien, um den Pfad zur DLL dynamisch zu gestalten.
  • Fehlerbehandlung einfügen:

    • Implementiere eine robuste Fehlerbehandlung in Deinem VBA-Code, um unerwartete Probleme zu vermeiden.
  • Dokumentation:

    • Halte Deine Makros und deren Abhängigkeiten gut dokumentiert, damit andere Benutzer sie leichter verstehen und verwenden können.

FAQ: Häufige Fragen

1. Wie kann ich überprüfen, welche DAO-Version ich habe?
Du kannst dies im VBA-Editor unter Extras > Verweise überprüfen. Dort wird die Version der eingebundenen Bibliotheken angezeigt.

2. Was ist der Unterschied zwischen DAO 120 und 360?
DAO 120 bezieht sich auf die Version, die mit Microsoft Access 2007 eingeführt wurde, während DAO 360 eine ältere Version ist. Verwende die Version, die am besten zu Deiner Anwendung passt.

3. Kann ich die Bibliothek auch ohne Administratorrechte einbinden?
Ja, wenn Du Late Binding verwendest, ist es nicht notwendig, die Bibliothek manuell einzubinden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige