Excel VBA Nebenwirkung

metalbeppi

Cadet 4th Year
Registriert
Sep. 2006
Beiträge
126
Hallo, ich würde gerne haben, dass das selbe VBA Makro beim öffnen einer beliebigen Excel Datei, egal ob alt, oder neu, ausgeführt wird. Das habe ich zwar geschafft aber ich habe eine Nebenwirkungen.

Wie ich vorgegangen bin:

In einer beliebigen Excel-Datei (Mappe 1) auf Ansicht -> Makros -> Makro aufzeichnen -> Makro speichern in: Persönliche Arbeitsmappe -> Irgendein Dummy-Makro aufzeichnen -> Dieses wieder löschen.
Damit erstellt Excel die Datei PERSONAL.XLSB unter Benutzer\AppData\Roaming\Microsoft\Excel\XLSTART

Dann Alt + F11 -> Doppelklick auf "DieseArbeitsmappe" welche zu "VBAProject (PERSONAL.XLSB)" gehört -> Diesen Code eingefügt:

Code:
Private Sub Workbook_open()
MsgBox "Achtung"
End Sub


Das Problem ist jetzt, dass wenn ich eine Datei öffne zB "Mappe1" und ich den Fenster schließen Button von Windows verwende, dass dann zwar die ganzen Tabellen der "Mappe1" geschlossen werden, aber das ganze Excelzeugs (Ribbon usw.) offen bleiben. Ich muss daher nochmal auf den Fensterschließen-button klicken, damit das auch weg geht. Und immer zwei mal schließen zu klicken ist etwas umständlich. Zur Info, ich habe nur eine Datei geöffnet (PERSONAL.XLSB) ist ausgeblendet, trotzdem muss man zweimal klicken.

Und was vielleicht noch komisch ist, auch wenns egal ist. Wenn ich bei Mappe1 Ansicht -> Einblenden -> PERSONAL.XLSB gehe. Und dann wieder Mappe1 in den Fokus nehme und innerhalb der Mappe1 auf ausblenden gehe wird die Mappe1 selbst ausgeblendet, jedoch nicht die PERSONAL.XLSB, obwohl ich die mit "einblenden" eingeblendet habe oO
 
Ich kann dir das zwar nicht beantworten, aber poste das auch mal hier, wenn das nix wird.
Echte Office Experten und VBA Kenner sind da unterwegs.

http://www.office-loesung.de/


*edit1:
Google FTW:
Das geht in Excel 2007 so nicht mehr. Wurde abgeschafft. Das kann man nur ändern, indem man in den Exceloptionen die Funktion "Fenster in Taskleiste" deaktiviert. Dann hat man aber nur noch eine Schaltfläche für alle Arbeitsmappen in der Taskleiste. Man kann aber immer noch mit der Tastenkombination STRG+TAB zwischen den Arbeitsmappen wechseln. Es gibt auch keine Registryhack dafür.
Quelle: *klick*

*edit2:
Abgeschafft ist Blödsinn, passiert aber mit manchen Macros im Autoload.
 
Zuletzt bearbeitet:
Also dieses Problem scheint immer aufzutreten, wenn man versteckte Arbeitsmappen verwendet. Habe jetzt auch keine sinnvolle Lösung finden können. Oft wird empfohlen das Schließen-Symbol zur Quicktoolbar links oben hinzuzufügen, darauf braucht man dann nur einmal zu klicken. Leider ziemlich umständlich :/


€: Ok, bin jetzt auf eine Lösung draufgekommen:

In ein Klassenmodul namens cl_APP unter PERSONAL.xlsb:

Code:
Public WithEvents app As Excel.Application


Private Sub app_WorkbookBeforeClose(ByVal wB As Workbook, Cancel As Boolean)
    If (Workbooks.Count > 2) Then
        Exit Sub
    End If
    CloseReq = True
    If ActiveWorkbook.Saved = True Then
        SendKeys "%{F4}", True
    End If
    app.OnTime Now, "Abort"
End Sub


Private Sub app_WorkbookDeactivate(ByVal wB As Excel.Workbook)
    If CloseReq Then
    SendKeys "%{F4}", True
    End If
End Sub

Private Sub app_WorkbookBeforeSave(ByVal wB As Workbook, _
ByVal SaveAsUI As Boolean, Cancel As Boolean)
app.OnTime Now, "AfterSave"
End Sub

In ein Modul unter PERSONAL.xlsb:

Code:
Public appMonitor As cl_APP

Public CloseReq As Boolean

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub AfterSave()
Sleep 500
If CloseReq Then
    SendKeys "%{F4}", True
End If
End Sub

Sub Abort()
CloseReq = False
End Sub

In "Diese Arbeitsmappe" unter PERSONAL.xlsb:

Code:
Private Sub Workbook_Open()
    Set appMonitor = New cl_APP
    Set appMonitor.app = Application
    CloseReq = False
End Sub
 
Zuletzt bearbeitet:
Zurück
Oben