Changing Excel Icon on the title bar of the Excel application

You can change an icon on the title bar of the Excel application like the image below.

As far as I knew, the icon file (the extension is .ico) needs to be prepared apart from the Excel file.
But here is the way of embedding an icon in a worksheet as an image control, and displaying the picture on the title bar of Excel using the handle of the embedded icon image.

  1. Add an image control on the worksheet. (In this example, the image control is placed in the Sheet1)

    You can add image controls View - Toolbars - Control Toolbox from main menu bar.
  2. Right click for Propertiesof the image control and select appropriate ico file(with an extension of .ico) from picture property box in the properties window.
    Now you can see the picture on the Sheet1 as follows.

  3. Place the following in the standard module.

Note: Some kind of ico image doesn't work. I am not sure about the reason.

Option Explicit

Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
                            (ByVal lpClassName As String, _
                             ByVal lpWindowName As String) _
                            As Long

Declare Function SendMessage Lib "user32" _
                             Alias "SendMessageA" _
                             (ByVal hWnd As Long, _
                              ByVal wMsg As Long, _
                              ByVal wParam As Long, _
                              lParam As AnyAs Long

Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As LongAs Long

Const WM_SETICON = &H80
Const ICON_SMALL = 0&
Const ICON_BIG = 1&

Sub ChangingExcelIcon()
    MsgBox "Change Excel Icon"
    Call ChangeXLIcon(Sheet1.Image1.Picture.Handle)
End Sub

Sub MakeExcelIconDefaultAgain()
    MsgBox "Make Excel Icon default again"
    Call ChangeXLIcon
End Sub

Private Sub ChangeXLIcon(Optional ByVal hIcon As Long = 0&)
    Dim hWnd As Long
    Dim lngRet As Long
    'Get the handle of Excel application
    hWnd = FindWindow("XLMAIN", Application.Caption)
    lngRet = SendMessage(hWnd, WM_SETICON, ICON_SMALL, ByVal hIcon)
    lngRet = SendMessage(hWnd, WM_SETICON, ICON_BIG, ByVal hIcon)
    lngRet = DrawMenuBar(hWnd)
End Sub

| HOME |
Copyright © cellmasters.net - colo's junk room All Right Reserved
Tips and Information about Microsoft Excel|Masaru Kaji aka Colo