Microsoft Excel

Herbers Excel/VBA-Archiv

Excel-Leiste | Herbers Excel-Forum


Betrifft: Excel-Leiste von: Tom
Geschrieben am: 15.01.2012 22:39:03

Hallo zusammen,

ich habe die Ansicht "Ganzer Bildschirm".

Wie kann ich erreichen, dass die Leiste oben (mit dem Excel-Zeichen) nur den Namen der Datei oder einen anderen beliebigen anzeigt. Also ohne "Microsoft Excel" davor? Optimal wäre natürlich, wenn man auch noch das Excel-Zeichen durch ein eigenes Logo ersetzen könnte.

Danke vorab

Gruß
TOM

  

Betrifft: AW: Excel-Leiste von: Josef Ehrensberger
Geschrieben am: 15.01.2012 23:05:10


Hallo Tom,

das geht so.

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal ClassName As String, ByVal _
  WindowName As String) As Long
Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal Instance As Long, ByVal _
  ExeFileName As String, ByVal IconIndex As Long) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal Message _
  As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long

Const WM_SETICON = &H80

Private Sub ResetExcelIcon()
  Dim hWnd As Long
  Dim hIcon As Long
  
  hWnd = FindWindow("XLMAIN", Application.Caption)
  hIcon = ExtractIcon(0, Application.Path & "\excel.exe", 0)
  
  If hIcon > 1 Then
    Call SendMessage(hWnd, WM_SETICON, True, hIcon)
    Call SendMessage(hWnd, WM_SETICON, False, hIcon)
  End If
End Sub


Private Sub SetExcelIcon(ByVal IconPath As String)
  Dim hWnd As Long
  Dim hIcon As Long
  
  hWnd = FindWindow("XLMAIN", Application.Caption)
  hIcon = ExtractIcon(0, IconPath, 0)
  
  If hIcon > 1 Then
    Call SendMessage(hWnd, WM_SETICON, True, hIcon)
    Call SendMessage(hWnd, WM_SETICON, False, hIcon)
  End If
End Sub


Public Sub changeIconAndCaption()
  Application.Caption = "XXXEXCELXXX"
  
  'Die Icon-Datei muss im Verzeichnis der Arbeitsmappe liegen!
  Call SetExcelIcon(ThisWorkbook.Path + "\myIcon.ico")
  
  'Hier gewünschten Fenstertitel angeben!
  Application.Caption = "Hallo - Ich bin ein gepimtes Excelfenster"
  ActiveWindow.Caption = ""
End Sub


Public Sub resetIconAndCaption()
  Application.Caption = "XXXEXCELXXX"
  Call ResetExcelIcon
  Application.Caption = ""
  ActiveWindow.Caption = ActiveWorkbook.Name
End Sub






« Gruß Sepp »



  

Betrifft: AW: Excel-Leiste von: Tom
Geschrieben am: 15.01.2012 23:59:05

Hallo Sepp,

danke erstmal für Deine Mühe. Aber hier tut sich gar nichts ... Was mache ich falsch?
Habe den kompletten Code in ein neues Modul (Allgemein) kopiert und folgendes geändert:
'Hier gewünschten Fenstertitel angeben!
Application.Caption = "Tom - privat"
ActiveWindow.Caption = ""
End Sub Wie bekomme ich die Grafik als ico-Datei ??

Danke
TOM



' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal ClassName As String, ByVal _
WindowName As String) As Long
Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal Instance As Long, ByVal _
ExeFileName As String, ByVal IconIndex As Long) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal Message _
As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long

Const WM_SETICON = &H80

Private Sub ResetExcelIcon()
  Dim hWnd As Long
  Dim hIcon As Long
  
  hWnd = FindWindow("XLMAIN", Application.Caption)
  hIcon = ExtractIcon(0, Application.Path & "\excel.exe", 0)
  
  If hIcon > 1 Then
    Call SendMessage(hWnd, WM_SETICON, True, hIcon)
    Call SendMessage(hWnd, WM_SETICON, False, hIcon)
  End If
End Sub
Private Sub SetExcelIcon(ByVal IconPath As String)
  Dim hWnd As Long
  Dim hIcon As Long
  
  hWnd = FindWindow("XLMAIN", Application.Caption)
  hIcon = ExtractIcon(0, IconPath, 0)
  
  If hIcon > 1 Then
    Call SendMessage(hWnd, WM_SETICON, True, hIcon)
    Call SendMessage(hWnd, WM_SETICON, False, hIcon)
  End If
End Sub
Public Sub changeIconAndCaption()
  Application.Caption = "XXXEXCELXXX"
  
  'Die Icon-Datei muss im Verzeichnis der Arbeitsmappe liegen!
  Call SetExcelIcon(ThisWorkbook.Path + "\myIcon.ico")
  
  'Hier gewünschten Fenstertitel angeben!
  Application.Caption = "Tom - privat"
  ActiveWindow.Caption = ""
End Sub
Public Sub resetIconAndCaption()
  Application.Caption = "XXXEXCELXXX"
  Call ResetExcelIcon
  Application.Caption = ""
  ActiveWindow.Caption = ActiveWorkbook.Name
End Sub



  

Betrifft: AW: Excel-Leiste von: Tom
Geschrieben am: 16.01.2012 00:05:20

Sorry Sepp,

jetzt klappt es - musste das Makro nur manuell starten :-)

Danke !!!!

Gruß
TOM


  

Betrifft: AW: Excel-Leiste von: Josef Ehrensberger
Geschrieben am: 16.01.2012 00:06:27


Hallo Tom,

eine ico-Datei aus einer Grafik erstellen kann jedes ordentliche Grafikprogramm, z. B. IRFANVIEW.

Was heißt "tut sich gar nichts", der Fenstertitel wird aber schon geändert, wenn du "changeIconAndCaption" ausführst, oder?




« Gruß Sepp »