Herbers Excel-Forum - das Archiv
Menüleiste - vbCmdBar aus Service Downloads

|
Betrifft: Menüleiste - vbCmdBar aus Service Downloads
von: Sascha
Geschrieben am: 23.11.2003 17:40:19
Hallo,
hab mittels vbCmdBar aus dem Downloadbereich eine neue Menüleiste erstellt.
Mittels Application.DisplayFullScreen = True und Application.CommandBars("Worksheet Menu Bar").Enabled = False sind die anderen Menüleisten ausgeblendet.
Die neue Menüleiste hat am rechten Rand das typische X sowie minimieren maximieren.
Wie kann ich diese Anzeige ausblenden?
Danke
Sascha
Betrifft: AW: Menüleiste - vbCmdBar aus Service Downloads
von: Nepumuk
Geschrieben am: 23.11.2003 17:54:34
Hallo Sascha,
ich kann es nicht real testen, da ich deine Leiste nicht habe. Versuch es mal damit:
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Public Const GWL_STYLE = (-16)
Public Const WS_SYSMENU = &H80000
Public 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
Public 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
Code eingefügt mit: Excel Code Jeanie
Wenn es nicht klappt, dann kann ich nur mit deiner Mappe weiterhelfen.
Gruß
Nepumuk
Betrifft: AW: Menüleiste - vbCmdBar aus Service Downloads
von: Jochen
Geschrieben am: 23.11.2003 18:13:50
Hallo,
tolle Sache. Hast du auch eine Lösung, dass man das Excelfenster
nicht in der Größe verändern kann? Ich meine, wenn es beim Start
nicht maximiert ist, es durch ziehen an den Rändern nicht verändert
werden kann?
Grüße von Jochen
Betrifft: AW: Menüleiste - vbCmdBar aus Service Downloads
von: Nepumuk
Geschrieben am: 23.11.2003 18:36:31
Hallo Jochen,
mit folgendem Programm ist die Mappe weder in der Größe zu verändern noch zu verschieben. Du musst dann nur noch den Code aus meiner Antwort für Sascha benutzen um die Buttons wiederherstellen / maximieren / schließen zu löschen, damit der User nicht mit diesen arbeitet.
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Const MF_BYCOMMAND = &H0
Private Const SC_MOVE = &HF010
Private Const SC_SIZE = &HF000
Public Sub Suspend_change()
Dim hwnd As Long, hwndMenu As Long
hwnd = FindWindow("xlMain", vbNullString)
If hwnd <> 0 Then
hwndMenu = GetSystemMenu(hwnd, 0)
If hwndMenu <> 0 Then
DeleteMenu hwndMenu, SC_SIZE, MF_BYCOMMAND 'Größe ändern aus
DeleteMenu hwndMenu, SC_MOVE, MF_BYCOMMAND 'Verschieben aus
End If
End If
End Sub
Code eingefügt mit: Excel Code Jeanie
Gruß
Nepumuk
Betrifft: AW: Menüleiste - vbCmdBar aus Service Downloads
von: Jochen
Geschrieben am: 23.11.2003 18:47:02
Hallo,
danke, das hab ich schon lange gesucht.
Grüße von Jochen
Betrifft: AW: Menüleiste - vbCmdBar aus Service Downloads
von: Sascha
Geschrieben am: 23.11.2003 18:51:00
Hallo,
ich habs nicht zum laufen bekommen.
Hier mal meine Mappe:
https://www.herber.de/bbs/user/2119.xls
Danke
Sascha
Betrifft: AW: Menüleiste - vbCmdBar aus Service Downloads
von: Nepumuk
Geschrieben am: 23.11.2003 19:23:25
Hallo Sascha,
ich habe zwei Zeilen in das Workbook_Open - Ereignis eingefügt. Das wars.
Private Sub Workbook_Open()
' Makroablauf am Bildschirm aus
Application.ScreenUpdating = False
Application.DisplayFullScreen = True
Application.CommandBars("Worksheet Menu Bar").Enabled = False
Call CreateCmdBar
Call CreateControl
'Sub Bildschirm_optimieren()
'Bildschirmansicht wird maximiert:
If Application.WindowState <> xlMaximized Then Application.WindowState = xlMaximized
'Tabellenansicht wird maximiert:
ThisWorkbook.Unprotect "SASCHA"
If ActiveWindow.WindowState <> xlMaximized Then ActiveWindow.WindowState = xlMaximized
ThisWorkbook.Protect "SASCHA", True, True
'End Sub
' Makroablauf am Bildschirm ein
Application.ScreenUpdating = True
End Sub
Code eingefügt mit: Excel Code Jeanie
Gruß
Nepumuk
Betrifft: AW: Menüleiste - vbCmdBar aus Service Downloads
von: Sascha
Geschrieben am: 23.11.2003 20:36:22
Hallo,
mit Unprotect,Protect wird doch nicht das x, min, max in der Symbolleiste ausgeblendet. Das verstehe ich jetzt nicht.
Wo muß denn Dein Code hin?
Sascha
Betrifft: AW: Menüleiste - vbCmdBar aus Service Downloads
von: Nepumuk
Geschrieben am: 23.11.2003 20:47:17
Hallo Sascha,
das X , min , max ist nicht in der Symbolleiste sondern das kommt von der Leiste über dem Tabellenblatt. Wenn du in der Mappe den Arbeitsmappenschutz setzt und zusätzlich zur Strucktur auch die Fenster (dafür steht das zweite True) schützt, ist das X usw. ausgeblendet. Also, nicht meckern, sondern ausprobieren.
Gruß
Nepumuk
Betrifft: Sorry
von: Sascha
Geschrieben am: 23.11.2003 20:58:44
Hallo,
sorry, ich wollte keinesfalls meckern. Es ging lediglich um mein Verständnis. Hatte den Zusammenhang nicht verstanden.
Ich möchte hier nochmals betonen, das dieses Forum echt genial ist. Schnelle kompetente Hilfe.
Ich müßte ja bescheuert sein, wenn ich diese Hilfe mit Füßen treten würde.
Also nochmals Entschuldigung, wenn ich mich misverständlich ausgedrückt habe.
Habe natürlich das ganze ausprobiert und festgestellt das es funktioniert.
Danke für Deinen Tipp/Hilfe
Sascha
Betrifft: AW: Sorry
von: Nepumuk
Geschrieben am: 23.11.2003 21:27:47
Hallo Sascha,
ich fühlte mich nicht auf die Füße getreten. Wenn etwas, was ich vorschlage, nicht funktioniert, dann sollst du das sagen. Aber wie geschrieben, erst nachdem du es versucht hast.
Gruß
Nepumuk
Betrifft: AW: Sorry
von: Sascha
Geschrieben am: 23.11.2003 21:40:48
Hallo,
okay, werde künfitg erst testen, dann ggf. nach dem Warum fragen.
Nochmals Sorry.
Sascha