Registriert seit: 14.07.2021
Version(en): Office365
Hallo zusammen, ich möchte gerne die gesamte obere Titel- bzw. Programmleiste von Excel ausblenden. Ich habe schon im Forum gesucht und dazu einen Beitrag aus 2015 gefunden, der das Problem zumindest schon teilweise voran gebracht hat. Mit application.caption "..." kann ich ja zumindest schonmal Einfluss auf die Überschrift nehmen, so dass die Bezeichnung "Microsoft Excel" verschwindet. Aber leider bekomme ich die Leiste insgesamt nicht weg. Ich habe dazu im Netz einen alten API-Code gefunden, der aber leider auf meinem 64bit-System nicht läuft. Kann mir den jemand entsprechend anpassen? Wenn das aber alles nicht geht, würde es mir sogar reichen, wenn man zusätzlich zum Excel-Schriftzug auch das Excel-Symbol in der Titelleiste ausblenden könnte. Dann blieben ja nur noch die Funktionsbuttons "Schließen" und "Minimieren" in der rechten Ecke über. Das wäre noch hinnehmbar... hier noch der Code für die 32bit-Version aus dem MS-Office-Forum: http://www.office-loesung.de/ftopic571426_0_0_asc.phpDanke und Gruß
Registriert seit: 08.10.2020
Version(en): 2019+365
Moin, meinst Du das?
Interpunktion und Orthographie dieses Textes sind frei erfunden. Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Grüße, StefanB
Folgende(r) 1 Nutzer sagt Danke an StefanB für diesen Beitrag:1 Nutzer sagt Danke an StefanB für diesen Beitrag 28
• junjor
00202
Nicht registrierter Gast
Hallo, getestet unter Windows10 64 Bit mit einem 32 Bit Office: [attachment=40845]
Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:1 Nutzer sagt Danke an Gast für diesen Beitrag 28
• junjor
Registriert seit: 14.07.2021
Version(en): Office365
05.11.2021, 21:21
(Dieser Beitrag wurde zuletzt bearbeitet: 05.11.2021, 21:36 von junjor.)
Moin Case,
sorry für meine späte Rückmeldung und vor allem danke für deine Antwort!!
Ich habe es eingebaut, aber trotzdem funktioniert es leider nicht. Ich habe Office 365 in 64 Bit glaube ich. Vielleicht liegt es noch daran....?
Jedenfall werden im Debugger diese Zeilen in rot angezeigt:
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _ ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, _ ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Was könnte ich noch machen?
Moin Stefan B,
auch vielen Dank für deine Antwort!!!! Diese Funktion kannte ich bis eben noch gar nicht, aber das kommt der Sache ja schon extrem nah, wenn ich das manuell da oben einschalte!!!! Sehr cool!
Es wäre jetzt genau die Lösung, die ich bräuchte, wenn man diese Funktion beim Start der Datei gleich automatisch per VBA auslösen könnte.... kannst du mir da mit Code aushelfen?
Registriert seit: 22.11.2019
Version(en): 365
Hallo, hiermit sollte es unter 32 und 64-Bit Office funktionieren. Da fehlten noch ein paar PtrSafe und lngStyle muss ein LongPtr sein. Die Findwindow-Function ist obsolet, die war früher zum Ermitteln des Handles, aber jetzt gibt es ja Application.hWnd Code:
Option Explicit
Private Declare PtrSafe Function GetWindowRect Lib "user32" ( _ ByVal hwnd As LongPtr, lpRect As RECT) As Long Private Declare PtrSafe Function SetWindowPos Lib "user32" ( _ ByVal hwnd As LongPtr, ByVal hWndInsertAfter As LongPtr, _ ByVal x As Long, ByVal y As Long, _ ByVal cx As Long, ByVal cy As Long, _ ByVal wFlags As Long) As Long #If Win64 Then Private Declare PtrSafe Function GetWindowLongA Lib "user32" _ Alias "GetWindowLongPtrA" ( _ ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr Private Declare PtrSafe Function SetWindowLongA Lib "user32" _ Alias "SetWindowLongPtrA" (ByVal hwnd As LongPtr, _ ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr #Else Private Declare PtrSafe Function GetWindowLongA Lib "user32" ( _ ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr Private Declare PtrSafe Function SetWindowLongA Lib "user32" ( _ ByVal hwnd As LongPtr, ByVal nIndex As Long, _ ByVal dwNewLong As LongPtr) As LongPtr #End If Private Const GWL_STYLE = (-16) Private Const WS_SYSMENU = &H80000 Private Const WS_CAPTION As Long = &HC00000 Private Const WS_MAXIMINIMIZEBOX As Long = &H30000 Private Const SWP_FRAMECHANGED As Long = &H20 Private Const SWP_NOREPOSITION As Long = &H200 Private Const SWP_NOSIZE As Long = &H1 Private Const SWP_NOZORDER As Long = &H4
Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type
Public Sub Aus() Call AusEin(True) End Sub Public Sub Ein() Call AusEin(False) End Sub
Public Sub AusEin(ByVal blnWie As Boolean) Dim lngStyle As LongPtr Dim typRect As RECT With Application GetWindowRect .hwnd, typRect ThisWorkbook.Application.DisplayFullScreen = blnWie lngStyle = GetWindowLongA(.hwnd, GWL_STYLE) lngStyle = IIf(blnWie, lngStyle And Not WS_SYSMENU, lngStyle Or WS_SYSMENU) lngStyle = IIf(blnWie, lngStyle And Not WS_MAXIMINIMIZEBOX, lngStyle Or WS_MAXIMINIMIZEBOX) lngStyle = IIf(blnWie, lngStyle And Not WS_CAPTION, lngStyle Or WS_CAPTION) SetWindowLongA .hwnd, GWL_STYLE, lngStyle SetWindowPos .hwnd, 0, typRect.Left, typRect.Top, _ typRect.Right - typRect.Left, typRect.Bottom - typRect.Top, _ SWP_NOREPOSITION Or SWP_NOZORDER Or SWP_FRAMECHANGED End With End Sub
_________ viele Grüße Karl-Heinz
Folgende(r) 2 Nutzer sagen Danke an volti für diesen Beitrag:2 Nutzer sagen Danke an volti für diesen Beitrag 28
• junjor,
Registriert seit: 14.07.2021
Version(en): Office365
VIELEN DANK, Karl-Heinz!!!!!
funktioniert perfekt!! Das war genau die Lösung, die ich mir im Idealfall vorgestellt habe!
Nochmal Danke auch an alle, die mich hier unterstützt haben ! Klasse Forum!
Gruß, Micha
00202
Nicht registrierter Gast
Hallo Karl-Heinz, danke fürs einspringen. Da ich kein Office 64 Bit installiert habe, kann ich immer nur aus dem hohlen Bauch probieren.
Registriert seit: 22.11.2019
Version(en): 365
Hallo Case, Und mir geht es jetzt bei 32 Bit so Gruß KH
Registriert seit: 14.07.2021
Version(en): Office365
Hallo Karl-Heinz, ich bin's wieder mit einer kleinen Nachfrage zu deinem obigen Code: wenn ich deinen Code starte, lande ich ja wie gewünscht im kompletten Vollbild. Ich habe mir daher in der oberen rechten Ecke u.a. einen kleinen Button gebastelt, der Excel in die Taskleiste minimiert: Application.WindowState = xlMinimizedfunktioniert auch super wie gewünscht. Aber wenn ich jetzt in der Taskbar wieder auf das minimierte Excel klicke um Excel wieder im Vollbild zu öffnen, dann öffnet es sich nur im Normalbild mit sämtlichen Menüleisten und der Titelleiste, quasi ohne deinen Code auszuführen. Was kann ich machen, damit es sich aus der Taskleiste heraus wieder im kompletten Vollbild öffnet, also auf das entsprechende Makro zugreift? Oder wird dein Makro durch das Minimieren deaktiviert? Gruß, Micha
Registriert seit: 22.11.2019
Version(en): 365
Hallo Micha, der Sachverhalt ist auch mir neu und ich erkläre mir das folgendermaßen: Zum Wiederherstellen aus dem Minimizestatus sendet Windows die entsprechende Message an Excel. Excel stellt den entsprechenden Zustand her. Von den über das Makro erzeugten Einstellungen weiß Excel nichts mehr. Das ganze hat mit dem Makro nichts zu tun und dieses ist auch nicht deaktiviert. Ich habe mal etwas über das Excelevent "Workbook_WindowResize" programmiert, das scheint zu funktionieren. Das Makro bitte ins Modul "DieseArbeitsmappe" kopieren. Code:
Private Sub Workbook_WindowResize(ByVal Wn As Window) Static cOldHeight As Currency If cOldHeight = 0 Then cOldHeight = Wn.Height If cOldHeight = 20.4 Then Call Aus cOldHeight = Wn.Height End Sub
_________ viele Grüße Karl-Heinz
Folgende(r) 1 Nutzer sagt Danke an volti für diesen Beitrag:1 Nutzer sagt Danke an volti für diesen Beitrag 28
• junjor
|