Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
832to836
832to836
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Excel nicht über das rote X beenden

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

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel nicht über das rote X beenden
05.01.2007 19:15:32
Ramses
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
Anzeige
AW: Excel nicht über das rote X beenden
05.01.2007 19:42:14
Franc
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige