Hallo,
ich fürchte, das ist nicht ganz so trivial: du benötigst eine Klasse!
In der Annahme, dass es sich um Excel dreht:
Ich würde ein AddIn erstellen, hier eine Schritt-für-Schritt-Anleitung:
du öffnest eine neue, leere Exceldatei, löscht alle Tabellenblätter, bis auf eines.
Gehst in den VBA-Editor und fügst ein neues Klassenmodul ein. Im Eigenschaftenfenster (F4) nennst du es in clsExcelApp (rechts daneben, wo (Name) steht).
In das Klassenmodul fügst du diesen Code ein:
Option Explicit
Private WithEvents mExcelApp As Application
Public Property Set ExcelApplication(ExcelApp As Application)
Set mExcelApp = ExcelApp
End Property
Private Sub mExcelApp_WorkbookOpen(ByVal Wb As Workbook)
Dim Ws As Worksheet
For Each Ws In Wb.Worksheets
MsgBox Ws.Name & ": " & CStr(Not Ws.AutoFilter Is Nothing)
Next
End Sub
Private Sub Class_Terminate()
Set mExcelApp = Nothing
End Sub
Dann öffnest du das Modul "DieseArbeitsmappe" und fügst diesen Code dort ein:
Option Explicit
Dim myExcelApp As clsExcelApp
Private Sub Workbook_Open()
MsgBox "Addin aktiv (open)"
Set myExcelApp = New clsExcelApp
Set myExcelApp.ExcelApplication = Application
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set myExcelApp = Nothing
End Sub
Diese Datei speicherst du nun als AddIn (*.xlam). Excel schließen und wieder öffnen. Das Addin über Datei => Optionen => AddIns => ganz unten .... Auswählen und öffnen/installieren.
Jetzt wird das AddIn bei jedem Öffnen von Excel automatisch geöffnet.
Dabei wird im Modul DieseArbeitsmappe die Methode Workbook_Open ausgeführt und die Variable mExcelApp mit der Klasse clsExcelApp initialisiert.
Bisher konntest du einfach alles kopieren, jetzt kommt das wichtigste für dich:
Sobald eine Datei geöffnet wird, wird automatisch das Makro mExcelApp_WorkbookOpen ausgeführt. Dabei ist die Variable Wb das neu geöffnete Workbook (=Datei). Hier muss also dein Code rein. Dabei darfst du den Namen des Makros nicht verändern!
Ich habe dir zunächst mal eine Msgbox reingeschrieben. Wenn du also Dateien öffnest, müsstest du Msgboxen aufpoppen sehen (das ist die Kontrolle, das alles funktioniert).
Sehr viel ausführlicher erklärt findest du das Vorgehen hier:
https://online-excel.de/excel/singsel_vba.php?f=58
Ja, das geht auch über die personl.xlsm, würde ich aber nicht machen.
Grüße, Ulrich
|