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

Forumthread: Add-In als Verweis

Add-In als Verweis
22.11.2017 16:18:40
Burkhard
Hallo miteinander,
ich habe ein Add-In erstellt und möchte dies in Workbook_Open() als Verweis installieren bzw. aktivieren. Dazu hätte ich zwei Fragen:
1 Das Add-In ist an der richtigen Stelle (auf dem Laufwerk), aber noch nicht in der Liste der verfügbaren Verweise. Im Verweise-Dialog würde man dann mit "Durchsuchen..." weitermachen. Kann ich die xlam-Datei auch per Code verfügbar machen? Wie?
2 Wenn ich das richtig verstanden habe, muss ein verfügbarer Verweis noch aktiviert werden, z.B. mit References.AddFromFile "AddIn.xlam". Ab dann sind die Add-In-Module hier benutzbar. Ich möchte nun gleich vom Workbook_Open() aus eine Initialisierungsroutine starten, die sich natürlich im Add-In befindet. Wenn ich aber den Aufruf (z.b. InitMyWorkbook()) hier rein schreibe, bekomme ich einen Compilerfehler (Sub oder Function nicht definiert), bevor der Code überhaupt die Chance hat, den nötigen Verweis per AddFromFile zu aktivieren. Wie löst man diesen Knoten?
Grüße
Burkhard
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Add-In als Verweis
22.11.2017 16:30:58
Nepumuk
Hallo Burkhard,
per Application.Run - Methode kannst du eine Prozedur in einem Addin aufrufen.
Um per VBA einen Verweis zu installieren muss im Trust-Center - Einstellungen für Makros die Option "Zugriff auf das VBA-Projekt vertrauen" aktiviert sein.
Gruß
Nepumuk
AW: Add-In als Verweis
22.11.2017 16:37:36
Luschi
Hallo Burkhard,
solche AddIns, die nur für bestimmte Zwecke in wenigen Arbeitsmappen gebraucht werden,
installiere ich nicht und setze auch keine Verweise darauf, sondern öffne sie einfach _ wie eine normale Excelmappe:

Public myAddIn As Workbook
Private Sub Workbook_BeforeClose(Cancel As Boolean)
myAddIn.Close False
Set myAddIn = False
End Sub
Private Sub Workbook_Open()
On Error Resume Next
Set myAddIn = Workbooks("meinAddin.xlam")
On Error GoTo 0
If myAddIn Is Nothing Then
Set myAddIn = Workbooks.Open("H:\...\meinAddin.xlam", , False)
End If
'usw.
End Sub
Gruß von Luschi
aus klein-Paris
PS: ein weiterer Vorteil, muß es gegen eine neuere Version ersetzt werden, erspare ich mir das deinstallieren.
Anzeige
AW: Add-In als Verweis
23.11.2017 09:47:50
Burkhard
Hallo Luschi,
keine schlechte Idee. Prozeduren in MyAddIn muss ich dann von der jeweiligen xlsm-Datei aus mit Run starten, richtig?
Ich würde dann u.a. in MyAddIn ein paar Menüeinträge hinzufügen. Muss ich dann in OnAction irgendwas ändern? Es werden natürlich Prozeduren in MyAddIn aufgerufen, z.B.
.OnAction = "ExportSheetToFile"
Wie funktioniert das dann mit "Aktionsschaltflächen"? Kann ich die irgendwie per VBA mit einer "OnAction" versorgen? Das Problem liegt ja darin, dass die Schaltflächen in der xlsm-Datei sind, der zugehörige Code aber in MyAddIn.
(Hintergrund: der Code ist bisher in den xlsm-Dateien, davon habe ich mehrere Dutzend. Den will ich ja nun zentral in MyAddIn halten. Ich habe aber keine Lust, in mehreren Dutzend Dateien die Zuweisung "zu Fuß" (Kontextmenü "Macro zuweisen") umzustellen.)
Grüße
Burkhard
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Add-In als Verweis in Excel einrichten


Schritt-für-Schritt-Anleitung

  1. Add-In vorbereiten: Stelle sicher, dass dein vba xlam Add-In an einem zugänglichen Ort auf deinem Laufwerk gespeichert ist.

  2. Zugriff auf das VBA-Projekt aktivieren: Öffne Excel und gehe zum Trust-Center. Aktiviere die Option "Zugriff auf das VBA-Projekt vertrauen". Dies ist notwendig, um Verweise per VBA hinzuzufügen.

  3. Add-In als Verweis hinzufügen: Verwende im Workbook_Open()-Ereignis den folgenden Code, um das Add-In zu aktivieren:

    Private Sub Workbook_Open()
       Dim addinPath As String
       addinPath = "H:\...\meinAddin.xlam"
       If Not IsAddInLoaded(addinPath) Then
           Application.VBE.ActiveVBProject.References.AddFromFile addinPath
       End If
       Application.Run "InitMyWorkbook" ' Initialisierungsroutine aufrufen
    End Sub
    
    Function IsAddInLoaded(addinPath As String) As Boolean
       Dim ref As Reference
       For Each ref In Application.VBE.ActiveVBProject.References
           If ref.FullPath = addinPath Then
               IsAddInLoaded = True
               Exit Function
           End If
       Next ref
       IsAddInLoaded = False
    End Function
  4. Initialisierungsroutine im Add-In: Stelle sicher, dass die Routine InitMyWorkbook im Add-In definiert ist, damit du sie erfolgreich aufrufen kannst.


Häufige Fehler und Lösungen

  • Compilerfehler: Wenn du beim Aufruf von InitMyWorkbook einen Compilerfehler erhältst, könnte das daran liegen, dass der Verweis auf das Add-In noch nicht aktiviert ist. Stelle sicher, dass du den Code zur Aktivierung des Verweises korrekt implementiert hast.

  • Add-In nicht gefunden: Prüfe den Pfad des Add-Ins. Vergewissere dich, dass die vba xlam-Datei tatsächlich am angegebenen Ort vorhanden ist.


Alternative Methoden

Anstatt das Add-In als Verweis zu installieren, kannst du es auch wie eine normale Excel-Arbeitsmappe öffnen. Das hat den Vorteil, dass du dir die Verwaltung der Verweise sparen kannst:

Public myAddIn As Workbook

Private Sub Workbook_Open()
    On Error Resume Next
    Set myAddIn = Workbooks("meinAddin.xlam")
    On Error GoTo 0
    If myAddIn Is Nothing Then
        Set myAddIn = Workbooks.Open("H:\...\meinAddin.xlam", , False)
    End If
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    myAddIn.Close False
    Set myAddIn = Nothing
End Sub

Praktische Beispiele

Wenn du beispielsweise Menüeinträge im Add-In hinzufügen möchtest, kannst du dies so durchführen:

Sub AddMenuEntry()
    Dim ctrl As CommandBarControl
    Set ctrl = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlButton, Temporary:=True)
    ctrl.Caption = "Export Sheet"
    ctrl.OnAction = "ExportSheetToFile" ' Aufruf der Prozedur im Add-In
End Sub

Tipps für Profis

  • Verwende Application.Run: Mit dieser Methode kannst du Prozeduren in deinem vba addin aufrufen, ohne dass eine direkte Referenz benötigt wird. Dies ist besonders nützlich, wenn du viele Add-Ins verwaltest.

  • Code zentralisieren: Halte den Code in deinem Add-In zentral, um die Wartung zu erleichtern. Dadurch sparst du dir das wiederholte Kopieren von Code in mehrere Arbeitsmappen.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Add-In korrekt geladen wird?
Verwende die Funktion IsAddInLoaded, um zu überprüfen, ob das Add-In bereits aktiv ist, bevor du versuchst, es hinzuzufügen.

2. Kann ich die Schaltflächen in einer xlsm-Datei mit einem Makro verknüpfen?
Ja, du kannst die OnAction-Eigenschaft der Schaltflächen verwenden, um Prozeduren in deinem Add-In aufzurufen. Stelle sicher, dass die Prozedur im Add-In definiert ist.

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