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

Ereignis, wenn weiteres Excel-Projekt geöffnet wird, abfrage

Forumthread: Ereignis, wenn weiteres Excel-Projekt geöffnet wird, abfrage

Ereignis, wenn weiteres Excel-Projekt geöffnet wird, abfrage
11.02.2025 15:33:25
th.forum
Moin,
ich hab ein addin angelegt (THCode.xlam) mit Schnipseln, die ich immer mal brauche. Dieses addin wird beim Start von Excel geladen.
Nach dem Laden der xlam wird das eigentliche VBAProjekt (mit Mappe1) geladen.
Damit die Intellisense funzt, muss im VBAProjekt noch ein Verweis auf das xlam-Addin gesetzt werden.
Prinzipiell geht das mit so einem code:


Sub TH_Verweis()
Dim wb As Workbook
For Each wb In Workbooks
If wb.Name > ThisWorkbook.Name Then
wb.VBProject.References.AddFromFile (ThisWorkbook.VBProject.Filename)
End If
Next wb
end sub

Dieser code steht in einem Modul von THCode.xlam.
Ich kann so für jedes (andere als das xlam) Projekt einen Verweis auf xlam hinzufügen.
Das Problem aber ist, dass ein Aufruf von Workbook_Open des xlam 'zu früh' kommt, da das 'Haupt'-Projekt noch nicht geöffnet ist.
Der Code müsste aufgerufen werden, wenn das eigentliche (oder ein weiteres) VBAProjekt geöffnet wird.

Daher nun meine Frage: Kann ich in meinem addin ein Ereignis abfragen/generieren, das mir mitteilt: Ein neues VB-Projekt wird geöffnet, sodass ich dann meinem Verweise-code laufen lassen kann?

Vielen Dank für Hilfe!
TH
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Ereignis, wenn weiteres Excel-Projekt geöffnet wird, abfrage
11.02.2025 15:56:39
volti
Hallo,

das dürfte mit Klassenprogrammierung möglich sein...

Stichwort:
Private WithEvents coWorkbook As Workbook


Private Sub Class_Initialize()
Set coWorkbook = ActiveWorkbook
End Sub

Private Sub Class_Terminate()
Set coWorkbook = Nothing
End Sub




Gruß Karl-Heinz
Anzeige
AW: Ereignis, wenn weiteres Excel-Projekt geöffnet wird, abfrage
11.02.2025 19:01:25
th.forum
Danke, Karl-Heinz. Class war ein gutes Stichwort.
Ich habe Deinen Ansatz nicht verfolgt, weil ich das Gefühl habe, dass das Event nicht auf das (innerhalb des) workbook reagieren kann.
So bin ich nun hingekommen: Klasse ClsTHCode


Public WithEvents AppEvents As Application

Private Sub AppEvents_NewWorkbook(ByVal NWb As Workbook)
NWb.VBProject.References.AddFromFile (ThisWorkbook.VBProject.Filename)
End Sub
Private Sub AppEvents_WorkbookOpen(ByVal Wb As Workbook)
If Wb.Name > ThisWorkbook.Name Then 'wird auch für das xlam aufgerufen und macht dann Fehler...
Wb.VBProject.References.AddFromFile (ThisWorkbook.VBProject.Filename)
End If
End Sub


und im workbook_open vom xlam den aufruf des sub ConnectEventHandler, welches in dem Modul liegt, in dem auch meine snippets liegen.
Im Modul dann:


Dim ClsEvent As New ClsTHCode
Sub ConnectEventHandler()
Set ClsEvent.AppEvents = Application
End Sub


Das funktioniert. Beide events sind notwendig in der Klasse, da das eine nur feuert, wenn man ein neues Projekt öffnet, das andere nur, wenn man ein bestehendes öffnet.
Vielen Dank nochmal!
Anzeige
AW: Ereignis, wenn weiteres Excel-Projekt geöffnet wird, abfrage
11.02.2025 19:41:59
Volti
Ja dann passt es ja.
Ich wollte eigentlich eher WITHevents coApplication... anregen um Open, Close usw. für Workbooks abzufangen, hatte mich vertan.

Gruß Karl-Heinz
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18