Herbers Excel-Forum - das Archiv

Excel nicht über das rote X beenden

Bild

Betrifft: Excel nicht über das rote X beenden
von: Robert

Geschrieben am: 05.01.2007 19:07:37
Hallo,
gibt es eine Möglichkeit, es zu verhindern dass Excel über das obligatorische Rote Kreuz geschlossen werden kann???
Gruß
Robert
Bild

Betrifft: Nimm Windows 95...
von: EtoPHG

Geschrieben am: 05.01.2007 19:15:25
dort ist das Kreuz nicht rot!
Nein, im Ernst... Excel gut - VBA gut
http://www.google.ch/search?q=Schliessen+X+verhindern+site:www.herber.de&hl=de&lr=&as_qdr=all&filter=0
Gruss Hansueli
Bild

Betrifft: AW: Excel nicht über das rote X beenden
von: Ramses

Geschrieben am: 05.01.2007 19:15:32
Hallo
Das EXCEL-Systemmenü global abzusetzen geht meines Wissens nach nicht.
Aber du kannst das Arbeitsmappenbezogen herstellen
Probier mal.
Der ganze Code in ein Modul deiner Arbeitsmappe
Option Explicit
'Begin der Funktion
Public Const GWL_STYLE = (-16)
Public Const WS_SYSMENU = &H80000
'---
Declare
Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare 
Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Declare 
Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare 
Function DrawMenuBar Lib "User32" (ByVal hWnd As Long) As Long
Sub Hide_SYSMENU()
Dim xl_hwnd, lStyle
xl_hwnd = FindWindow("xlmain", vbNullString)
If xl_hwnd <> 0 Then
lStyle = GetWindowLong(xl_hwnd, GWL_STYLE)
lStyle = SetWindowLong(xl_hwnd, GWL_STYLE, lStyle And Not WS_SYSMENU)
DrawMenuBar xl_hwnd
End If
End Sub

Sub Show_SYSMENU()
Dim xl_hwnd, lStyle
xl_hwnd = FindWindow("xlmain", vbNullString)
If xl_hwnd <> 0 Then
lStyle = GetWindowLong(xl_hwnd, GWL_STYLE)
lStyle = SetWindowLong(xl_hwnd, GWL_STYLE, lStyle Or WS_SYSMENU)
DrawMenuBar xl_hwnd
End If
End Sub

Aus dem Workbook_Open Ereignis das "Hide_SYSMENU" aufrufen, und im Workbook_BeforeClose Ereignis das Show_SYSMENU aufrufen.
Gruss Rainer
Bild

Betrifft: AW: Excel nicht über das rote X beenden
von: Franc

Geschrieben am: 05.01.2007 19:42:14
und noch eine einfache Variante mit wenig zeilen wo excel nie wieder zu geht. (ausser über Taskmanager) ^^
Code in die DieseArbeitsmappe kopieren (NICHT in ein Modul oder Tabelle)
Wenn es doch mal zugehen soll, empfiehlt es sich ein Ausweg zu lassen zum Beispiel anstatt nur Cancel = True eine Abfrage/Hintertürchen zu lassen.
zum Beispiel (ein x in Zelle A1 und du kannst das Teil schließen)
If [A1] <> "x" Then Cancel = True
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = True
End Sub

 Bild
Excel-Beispiele zum Thema "Excel nicht über das rote X beenden"
Alle Arbeitsmappen schließen bzw. Excel beenden Windows beenden
Makro mit Excape-Taste ohne Fehlermeldung beenden Arbeitsmappe öffnen und nach Beenden des Mausklicks schließen
Notepad aufrufen und Routine nach Beenden fortsetzen