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

Forumthread: Bibliotheken einbinden

Bibliotheken einbinden
16.08.2005 09:15:33
WebViper
Hallo,
ich habe ein Excel-Makro, das auf eine Library zugreift, die in Excel nicht standardmäßig eingebunden ist.
Wenn jetzt jemand anderes die Datei öffnet bekommt derjenige Kompilierungsfehler.
Bei mir gehts, da ich die Library eingebunden hab.
Kann ich das einbinden dieser Library irgendwie per Code nachholen, falls nicht vorhanden?
Andere Lösungsvorschläge?
Danke!
WebViper
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bibliotheken einbinden
16.08.2005 10:08:54
Nepumuk
Hi,
das kann ich nicht nachvollziehen. Verweise werden mit der Mappe gespeichert. Welche Bibliothek ist es denn?
Gruß
Nepumuk
Excel & VBA – Beispiele
AW: Bibliotheken einbinden
16.08.2005 10:17:02
WebViper
Hallo,
liegt dann der Fehler wo anders? Also meiner meinung handelt es sich um die MS Office 11.0 Object Lib.
Bei mir funktioniert die Datei einwandfrei, ich leg sie auf einem Laufwerk ab und wenn jemand anders zugreift bekommt derjenige einen Kompilierungsfehler.
Wenn ich bei demjenigen die Libraries neu setze läuft der Code auf einmal problemlos durch...
Ich wüsste nicht, woran es sonst liegen sollte.
Probleme macht dieser Code:
'********************************************************************************************
' Beim Öffnen wird die Tastaturkombination und die Report-CommandBar definiert
'********************************************************************************************

Private Sub Workbook_Activate()
'On Error Resume Next
Dim oPopUp As CommandBarPopup
Dim oBtn As CommandBarButton
Application.MacroOptions macro:="QuickCheck", _
Description:="", ShortcutKey:="q"
-->  For Each oPopUp In Application.CommandBars(1).Controls
-->    If oPopUp.Caption = "Report-Funktionen" Then
-->      oPopUp.Delete
-->    End If
Next
-->  Set oPopUp = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, before:=10, ID:=123456789)
-->  oPopUp.Caption = "Report-Funktionen"
-->  oPopUp.Visible = True
-->  Set oBtn = oPopUp.Controls.Add
-->  With oBtn
-->      .Caption = "QuickCheck <Strg+Q>"
-->      .Style = msoButtonCaption
-->      .OnAction = "QuickCheck"
End With
End Sub

'********************************************************************************************
' Beim Schließen wird die Report-Commandbar wieder entfernt
'********************************************************************************************

Private Sub Workbook_Deactivate()
-->  Dim oPopUp As CommandBarPopup
-->  For Each oPopUp In Application.CommandBars(1).Controls
-->    If oPopUp.Caption = "Report-Funktionen" Then
-->      oPopUp.Delete
End If
Next
End Sub

Eine andere Idee?
Danke!
WebViper
Anzeige
AW: Bibliotheken einbinden
16.08.2005 10:29:47
Nepumuk
Hi,
an der kann es sicher nicht liegen, da sonst in der Mappe keine Symbolleisten (die sind Teil der Office - DLL) nicht angezeigt werden könnten. Sind außer den 4 Standardbibliotheken:
Visual Basic For Application
Microsoft Excel X.X Object Library
OLE Automation
Microsoft Office X.X Object Library
noch andere Verweise in der Mappe?
Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
AW: Bibliotheken einbinden
16.08.2005 10:45:32
WebViper
Hi,
ja, nämlich die:
MS Forms 2.0 Object Lib
MS ActiveXData Objects 2.x Lib
Gruß,
WebViper
AW: Bibliotheken einbinden
16.08.2005 10:54:34
Nepumuk
Hi,
MS Forms 2.0 Object Lib:
Ein ActiveX - Control in einer Tabelle bzw. ein Userform in der Mappe. Das ist eine Standard - DLL.
Aber die:
MS ActiveXData Objects 2.x Lib
sagt mir nichts. Kannst du diese auch auf dem anderen Rechner laden?
Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
AW: Bibliotheken einbinden
16.08.2005 11:06:39
WebViper
Hi,
ja, die kann ich laden. die brauche ich aber nur für die zeile (Shortcut):
Application.MacroOptions macro:="QuickCheck", _
Description:="", ShortcutKey:="q"
Aber die Office 11.0 ist Standardmäßig nicht eingebunden. Und ohne die läuft auch der Code nicht...
Einen Menüpunkt in einer Leiste zu erstellen ist doch auch mehr oder weniger "Office Standard" oder?
Gruß,
WebViper
Anzeige
AW: Bibliotheken einbinden
16.08.2005 12:01:37
Nepumuk
Hi,
dafür: Application.MacroOptions macro:="QuickCheck", _
Description:="", ShortcutKey:="q"
benötigst du keinesfalls den Verweis. Denn der geht auf die Excel - OLB.
Ich arbeite mit Excel2000, da wird die Office - DLL grundsätzlich geladen.
Öffne mal die Mappe auf dem anderen Rechner und lass in einer zweiten Mappe folgendes Makro laufen:
Public Sub test()
    Dim objRef As Object
    For Each objRef In Workbooks("Mappe1.xls").VBProject.References
        If objRef.isbroken Then MsgBox objRef.Description
    Next
End Sub

Den Dateinamen musst du natürlich noch anpassen. Wenn eine fehlerhafter Verweis drin ist, wird er dir angezeigt.
Gruß
Nepumuk
Anzeige
AW: Bibliotheken einbinden
16.08.2005 16:38:12
WebViper
Hallo,
ich kann den Fehler jetzt irgendwie nicht mehr reproduzieren...
Jetzt wo ich die Libraries mal gesetzt hab.
Ich muss mal schaun, ob ich von einem weiteren Rechner diesen Fall nochmal erzeugen kann.
Danke erst mal...
Gruß,
WebViper
AW: Bibliotheken einbinden
17.08.2005 08:30:34
WebViper
Hallo,
beim ausführen des Codes bekomme ich folgende Fehlermeldung:
Userbild
Das Problem scheint doch wo anders zu liegen. Ich hab jetzt nämlich versucht, die Libraries in dem Dokument auf meinem Rechner neu zu setzten.
Öffne ich die Datei auf einen anderen Rechner (aktuellstes Office + alles SPs und Hotfixes) sind auch alle Libraries eingebunden, aber ich bekomme fehlermeldungen beim Ausführen des Codes.
Öffne ich über Extras --&gt Verweise das Fenster der Bibliotheken, ändere nichts an den Einstellungen und Klicke einfach auf OK (statt Abbrechen) funktioniert der Code auf einmal. Ohne Irgendwelche Verweise oder so neu gesetzt zu haben!
Komisch, oder?
Gruß,
WebViper
Anzeige
AW: Bibliotheken einbinden
17.08.2005 08:42:49
Nepumuk
Hi,
du musst ab XP unter Extras - Makro - Sicherheit - Vertrauenswürdige Quellen - Zugriff auf Visual Basic-Projekt vertrauen ein Häkchen rein machen.
Gruß
Nepumuk
Excel & VBA – Beispiele
AW: Bibliotheken einbinden
16.08.2005 13:13:33
Fred
Hi,
erstell die controls mit Late Binding, dann entfällt das Problem.
mfg Fred
Anzeige
AW: Bibliotheken einbinden
16.08.2005 14:47:10
WebViper
Hi,
und wie geht das?
Gruß,
WebViper
AW: Bibliotheken einbinden
16.08.2005 15:52:33
Fred
Hi,
sorry, ich hatte bei VBA gut vorausgesetzt, dass das bekannt ist. Die Objecte allgemein deklarieren und statt msoControlPopup den entsprechenden Zahlenwert verwenden, hier 10
Option Explicit

Private Sub Workbook_Activate()
Dim oPopUp As Object
Dim oBtn As Object
Application.MacroOptions macro:="QuickCheck", _
Description:="", ShortcutKey:="q"
For Each oPopUp In Application.CommandBars(1).Controls
If oPopUp.Caption = "Report-Funktionen" Then
oPopUp.Delete
End If
Next
Set oPopUp = Application.CommandBars(1).Controls.Add(Type:=10, before:=10, ID:=123456789)
oPopUp.Caption = "Report-Funktionen"
oPopUp.Visible = True
Set oBtn = oPopUp.Controls.Add
With oBtn
.Caption = "QuickCheck <Strg+Q>"
.Style = 2
.OnAction = "QuickCheck"
End With
End Sub

Für MacroOptions ist kein spezieller Verweis nötig.
mfg Fred
Anzeige
AW: Bibliotheken einbinden
17.08.2005 08:21:59
WebViper
Hi,
ich wuerde zwar behaupten, dass ich in vba einiges weiß inzwischen, aber das war mir unbekannt... Ich teste es mal!
Dank dir!
WebViper
;
Anzeige
Anzeige

Infobox / Tutorial

Bibliotheken in Excel einbinden


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke Alt + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Verweise aktivieren: Gehe zu Extras > Verweise. Hier kannst du die benötigten Excel-Bibliotheken auswählen. Stelle sicher, dass die benötigte Bibliothek in der Liste angekreuzt ist.

  3. VBA Bibliothek einbinden (falls nicht vorhanden):

    • Wenn du eine Bibliothek benötigst, die nicht standardmäßig eingebunden ist, kannst du sie über den VBA-Editor manuell hinzufügen.
    • Du kannst auch versuchen, die Bibliothek programmgesteuert hinzuzufügen, indem du den folgenden Code verwendest:
      Sub AddLibrary()
      On Error Resume Next
      Dim lib As Object
      Set lib = Application.VBE.ActiveVBProject.References.AddFromFile("Pfad\zur\Library.dll")
      On Error GoTo 0
      End Sub
    • Ersetze "Pfad\zur\Library.dll" mit dem tatsächlichen Pfad zur benötigten DLL-Datei.
  4. Makro in Excel einbinden: Nutze Application.MacroOptions für die Definition von Makros.

    Application.MacroOptions macro:="QuickCheck", Description:="", ShortcutKey:="q"

Häufige Fehler und Lösungen

  • Kompilierungsfehler: Wenn jemand anderes die Datei öffnet und einen Kompilierungsfehler erhält, liegt es oft daran, dass die benötigte Bibliothek nicht auf dem Rechner vorhanden ist. Stelle sicher, dass alle benötigten Excel VBA Verweise aktiviert sind.

  • Fehlerhafte Verweise: Du kannst einen einfachen Code verwenden, um zu überprüfen, ob es fehlerhafte Verweise gibt:

    Public Sub CheckReferences()
       Dim objRef As Object
       For Each objRef In ThisWorkbook.VBProject.References
           If objRef.IsBroken Then MsgBox objRef.Description
       Next
    End Sub
  • Vertrauenswürdige Quellen: In Excel 2003 und neuer musst du unter Extras > Makros > Sicherheit die Option für den Zugriff auf das Visual Basic-Projekt aktivieren.


Alternative Methoden

  • Late Binding: Anstatt eine VBA Bibliothek einzubinden, kannst du Late Binding verwenden. Dies reduziert Komplikationen mit fehlenden Verweisen. Hier ein Beispiel:

    Dim oPopUp As Object
    Set oPopUp = Application.CommandBars(1).Controls.Add(Type:=10, before:=10, ID:=123456789)
  • Excel Object Library: Du kannst die Excel Object Library verwenden, um bestimmte Funktionen zu nutzen, ohne die Bibliotheken manuell zu aktivieren.


Praktische Beispiele

  • Erstellen einer Funktionsbibliothek in Excel: Du kannst eine Excel VBA Code Library erstellen, die häufig genutzte Funktionen enthält. Zum Beispiel:

    Function AddNumbers(a As Double, b As Double) As Double
       AddNumbers = a + b
    End Function
  • Benutzerdefinierte Menüs: Mit dem Code zur Erstellung von Menüs kannst du benutzerdefinierte Befehle hinzufügen, wie im vorherigen Abschnitt beschrieben.


Tipps für Profis

  • Verwende Application.MacroOptions: Dies ist eine einfache Möglichkeit, um Shortcuts für Makros zu erstellen, ohne zusätzlich eine Excel Bibliothek einbinden zu müssen.

  • Fehlerbehebung: Wenn du regelmäßig auf Kompilierungsfehler stößt, versuche, die Bibliotheken in der Datei neu zu setzen, indem du das Verweisen-Fenster öffnest und einfach auf OK klickst.

  • Sichere deine Makros: Stelle sicher, dass deine Makros gut kommentiert sind, um die Wartung zu erleichtern.


FAQ: Häufige Fragen

1. Wie kann ich eine Excel-Bibliothek erstellen? Um eine Excel-Bibliothek zu erstellen, kannst du ein neues Modul im VBA-Editor anlegen und deine Funktionen dort definieren.

2. Was ist der Unterschied zwischen Early Binding und Late Binding? Early Binding erfordert das Setzen von Verweisen auf eine Bibliothek, während Late Binding keine solchen Verweise benötigt und somit flexibler ist, aber weniger IntelliSense bietet.

3. Wie kann ich sicherstellen, dass alle Benutzer die gleiche Bibliothek haben? Du kannst die benötigten Bibliotheken dokumentieren und sicherstellen, dass alle Benutzer diese installieren, bevor sie die Datei nutzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige