Excel Titelleiste ausblenden
#1
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.php

Danke und Gruß
Antworten Top
#2
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:
  • junjor
Antworten Top
#3
Hallo, 19 

getestet unter Windows10 64 Bit mit einem 32 Bit Office: 21
[attachment=40845]
[-] Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:
  • junjor
Antworten Top
#4
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?
Antworten Top
#5
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:
  • junjor,
Antworten Top
#6
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
Antworten Top
#7
Hallo Karl-Heinz, 19 

danke fürs einspringen. Da ich kein Office 64 Bit installiert habe, kann ich immer nur aus dem hohlen Bauch probieren. 21
Antworten Top
#8
Hallo Case,

Und mir geht es jetzt bei 32 Bit so Smile

Gruß KH
Antworten Top
#9
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 = xlMinimized

funktioniert 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?   Huh

Gruß,
Micha
Antworten Top
#10
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:
  • junjor
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste