Hallo,
Ich habe ein Addin erstellt, das neben Makros auch Formularvorlagen enthält. Wenn das Addin (über den Addin-Manager) eingebunden ist, kopiere ich die Vorlagen in die aktuelle Mappe.
Nun zu meinem Problem: Einige dieser Vorlagen brauchen Eventroutinen. Das, was beim Event passieren soll, ist in das Addin ausgelagert. Jetzt müsste ich diese Prozeduren beim Eintreten des Events in der aktuellen Mappe aufrufen können.
Gebe ich in der Eventroutine den Dateinamen des Addins statisch an, kann ich Code des Addins ausführen:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Const xla = „addin.xla“
If Not ActiveCell Is Nothing Then
Application.Run xla & _
„!Addin_Module.event_Worksheet_BeforeDoubleClick“, _
Target, Cancel
End If
End Sub
Das gefällt mir nicht, weil es statisch ist. Ich muss an allen Stellen, an denen ich Eventcode habe, den Dateinamen des Addins angeben und der kann sich ändern, wenn es verschiedene Versionen gibt. Außerdem enthält die aktuelle Mappe dann eine Verknüpfung zum Addin.
Lieber wäre mir, wenn ich die Routine über den Projektnamen ansprechen könnte, in etwa so:
Application.Run Application.VBE.VBProjects(„Addin-Projekt“). _
VBComponents(„Addin_Module“). _
event_Worksheet_BeforeDoubleClick, Target, Cancel
Aber das klappt leider nicht.
Weil ich gehört habe, dass das Problem gelöst werden könnte, indem man im VBA einen Verweis auf das Addin setzt, hab ich das auch probiert. Aber ich erhalte die Fehlermeldung „Name steht in Konflikt mit vorhandenem Modul, Projekt oder vorhandener Objektbibliothek“. Dabei heißt das VBA-Projekt des Addins „Addin-Projekt“ und das VBA-Projekt der aktuellen Mappe „VBAProject“. Ich nehme an, dass die Meldung erscheint, weil das Addin bereits über den Addin-Manager eingebunden ist.
Für Ideen, wie ich dynamisch auf das Addin zugreifen kann, bin ich dankbar!
Viele Grüße,
Kerstin 
PS: Zur Info: Ich arbeite mit Excel 2000 SP3.