>> Die Symbolleiste mit dem Code-Snippet Symbol war in meinem Internet-Explorer 11 nicht sichtbar.
Interessant. Dann liegt es wohl daran, dass man hier häufig derlei Posts anfindet, in denen der Quelltext nicht richtig dargestellt wird.
Zu deinem Problem:
Du scheinst noch nicht ganz verstanden zu haben wie der Ablauf (bei den Events) zu deuten ist.
-
Workbook_Open - tritt auf, wenn die Mappe, in derjenige Quelltext steht, geöffnet wird
-
m_objXLApp_NewWorkbook - tritt auf, wenn eine neue Mappe erstellt wird (also nicht geöffnet, sondern erstellt)
-
m_objXLApp_WorkbookOpen - tritt auf, wenn eine Mappe geöffnet wird (also eine Mappe die irgendwo schon gespeichert vorliegt)
Willst du also auf eine geöffnete Mappe reagieren, gehört dein Quelltext in das Ereignis unter Punkt 3.
Willst du hingegen auf eine neue Mappe reagieren, gehört dein Quelltext in das Ereignis unter Punkt 2.
Keinesfalls aber in Punkt 1, weil AddIns direkt gestartet werden wenn Excel gestartet wird (und sie laufen im Hintergrund). Zu diesem Zeitpunkt existiert also noch keine einzige Mappe und daher läuft man mit ActiveWorkook ins Leere und somit in einen Laufzeitfehler.
Richtig ist also:
Option Explicit
Private WithEvents m_objXLApp As Excel.Application
Private Sub m_objXLApp_NewWorkbook(ByVal Wb As Workbook)
Debug.Print "<NewWorkbook> Wb.Name = '" & Wb.Name & "'"
If Wb.Name = "Mappe1" Then
Call Makro1 'wo liegt dieses Makro?!
End If
End Sub
'Private Sub m_objXLApp_WorkbookOpen(ByVal Wb As Workbook)
' Debug.Print "<WorkbookOpen> Wb.Name = '" & Wb.Name & "'"
'End Sub
Private Sub Workbook_Open()
Set m_objXLApp = Application
End Sub
|