Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Schliessen eines Fenster soll nur unter bestimmten Bedingungen moeglich sein

76 views
Skip to first unread message

Frank Petschke

unread,
Mar 2, 2004, 4:00:28 AM3/2/04
to
Hallo,
ich muss absichern, dass eine Arbeitsmappe mit Makros (VBA, Excel2000) nur
geschlossen werden kann, wenn sie die noch einzig offene Arbeitsmappe in der
Excel-"Application" ist. Ich benötige also eine VBA-Lösung für ein
"bedingtes Schließen" eines Worksheets. Die Lösung muss auch im Systemmenü
des Fensters (x) wirksam sein.

Also:
Wird auf das Kreuz (x) des Fensters der aktiven Arbeitsmappe geklickt, soll
eine VBA-Routine vor dem Schließen des Fensters erst abfragen, ob dieses
Fenster wirklich das einzige offene Fenster in Excel ist. Wenn noch andere
Arbeitsmappen-Fenster offen sind, soll das Schließen mit Sicherheit
verhindert werden.

Kann jemand helfen oder Hinweise geben?

--
Frank

Frank Kabel

unread,
Mar 2, 2004, 4:42:54 AM3/2/04
to
Hi Franl
nicht völlig sicher, aber versuche folgendes: Füge das untenstehende
Makro in das Modul 'DieseArbeitsmappe" ein:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
if Application.Workbooks.Count > 1 then
MsgBox "Es sind noch " & Application.Workbooks.Count & "offen.
Schließen wird abgebrochen"
Cancel = True
end if
End Sub


--
Regards
Frank Kabel
Frankfurt, Germany

stefan onken

unread,
Mar 2, 2004, 4:49:24 AM3/2/04
to
hallo Frank,
das könntest du im BeforeClose-Ereignis der Datei
abfangen, zB so:


Private Sub Workbook_BeforeClose(Cancel As Boolean)

If Workbooks.Count > 1 Then
MsgBox "Alle anderen Dateien schließen!"
Cancel = True
End If
End Sub

Funktioniert allerdings nicht bei 2 oder mehr parallel
geöffneten Excel-Tasks.

Gruß
stefan


>-----Originalnachricht-----

>.
>

Frank Petschke

unread,
Mar 2, 2004, 5:29:09 AM3/2/04
to
Danke für die schnelle Hilfe (auch an die anderen),

jetzt habe ich nur noch ein Problem zu lösen:

Mit folgendem Code kann man alle Kontextmenü-Einträge unterbinden:

Public Sub Kontextmenus_aus()
Application.DisplayFormulaBar = False
Application.DisplayStatusBar = False
With Application
.CommandBars("Cell").Enabled = False
.CommandBars("Row").Enabled = False
.CommandBars("Column").Enabled = False
.CommandBars("System").Enabled = False
.CommandBars("Toolbar List").Enabled = False
.CommandBars("Ply").Enabled = False
End With
End Sub

Leider kann man trotzdem mit der rechten Maustaste im Systemmenü des
Fensters noch ein Kontextmenü aufrufen.

Ich will dieses Kontextmenü (was man nur mit der rechten Maustaste erreicht)
unterbinden, zumindest den Befehl "Speichern unter..." wirksam unterbinden.

Mein Ziel:
Die Arbeitsmappe darf nicht unter einem anderen Namen abgespeichert werden,
falls der aktuelle nicht mit einem definierten Präfix beginnt.

--
Frank

"Frank Kabel" <frank...@freenet.de> schrieb im Newsbeitrag
news:OLl8stDA...@TK2MSFTNGP11.phx.gbl...

Melanie Breden

unread,
Mar 2, 2004, 5:36:58 AM3/2/04
to
Hallo Frank,

Frank Petschke schrieb:


> Mit folgendem Code kann man alle Kontextmenü-Einträge unterbinden:
>
> Public Sub Kontextmenus_aus()
> Application.DisplayFormulaBar = False
> Application.DisplayStatusBar = False
> With Application
> .CommandBars("Cell").Enabled = False
> .CommandBars("Row").Enabled = False
> .CommandBars("Column").Enabled = False
> .CommandBars("System").Enabled = False
> .CommandBars("Toolbar List").Enabled = False
> .CommandBars("Ply").Enabled = False
> End With
> End Sub
>
> Leider kann man trotzdem mit der rechten Maustaste im Systemmenü des
> Fensters noch ein Kontextmenü aufrufen.

mit folgendem Code werden alle Kontextmenüs deaktiviert, vielleicht hilft dir das weiter?

For Each cmb In Application.CommandBars
If cmb.Type = msoBarTypePopup Then
cmb.Enabled = False
End If
Next

--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#

Frank Petschke

unread,
Mar 2, 2004, 5:59:30 AM3/2/04
to
Danke Melanie, das wars!

"Melanie Breden" <Melanie.Br...@mvps.org> schrieb im Newsbeitrag
news:c21o35$1o5uva$1...@ID-200118.news.uni-berlin.de...

Melanie Breden

unread,
Mar 2, 2004, 7:05:20 AM3/2/04
to
Hallo Frank,

Frank Petschke schrieb:
> Danke Melanie, das wars!

Bittesehr, ist gern geschehen :-)

0 new messages