1.2k Aufrufe
Gefragt in Tabellenkalkulation von Mitglied (926 Punkte)
Guten Abend,
ein Makro, das in der Personal.xls in DieseArbeitsmappe steht, soll automatisch ausgeführen werden, wenn "Speichern unter.. " angeklickt wird.
Ich dachte der Makroname "Sub Workbook_SaveAs()" ?? würde das bewirken. Wie muss das richtig heissen?
mfg
Wolfgang

3 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Wolfgang,

das ist aufwendiger. Das geht nur über Klassen. Mein Archiv schreibt dazu.
Aktion auslagern z.B. Open
du solltest versuchen alle Routinen in dein Addin auszulagern. Für Workbook- oder Worksheet-Ereignisroutinen müsste da allerdings was über Klassenmodule gelöst werden.
' ***Klassenmodul Klasse1***
Option Explicit

Public WithEvents xlApp As Excel.Application

Private Sub xlApp_WorkbookOpen(ByVal Wb As Workbook)
MsgBox prompt:="Es wurde eine Arbeitsmappe geöffnet!" 'Code wird ausgeführt, wenn eine Mappe geöffnet wird
End Sub

' ***allg. Modul Modul1***

Option Explicit

Public ExcelNeu As New Klasse1

' ***Objektmodul DieseArbeitsmappe***

Option Explicit

Private Sub Workbook_Open()
Set ExcelNeu.xlApp = Application
End Sub
Von xr8k2


Gruß Hajo
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo Hajo,
ich hatte schon selbst herausgefunden, das es in Excel ein SaveAs-Ereignis (wie in meinem allerersten Word-Makro) nicht gibt. Und wenn du schon sagst:
das ist aufwendiger
dann wähle ich einen anderen Weg.
Ich suche gleich mal wo ich eine Anleitung finde wie ich das Menue-"Datei" ergänze.
mfg
Wolfgang
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Wolfgang,

das Ereignis gibt es
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
und soweit mir bekannt ist SaveAsUI True bei speichern unter.

Gruß Hajo
...