Gdy otworzysz dowolny plik Excela to na pasku zadań zobaczysz znajomą ikonę

Można jednak Excelowi zmienić ikonę na pasku zadań na inną. Np. na ikonę programu PowerPoint

Jak tego dokonałem? Otóż napisałem małe makro, które zmieniło ikonę aplikacji
Aby uzyskać taki efekt napisać proste makro, które można podpiąć pod zdarzenie auto_open
Option Explicit
' Inspiracja:
' https://stackoverflow.com/questions/20142765/how-to-change-the-excel-icon-in-taskbar-while-loading
#If VBA7 Then
Declare PtrSafe Function ExtractIcon32 Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As LongPtr, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As LongPtr
Declare PtrSafe Function GetActiveWindow32 Lib "user32" Alias "GetActiveWindow" () As LongPtr 'Integer
Declare PtrSafe Function SendMessage32 Lib "user32" Alias "SendMessageA" (ByVal hWnd As LongPtr, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
#Else
Declare Function ExtractIcon32 Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
Declare Function GetActiveWindow32 Lib "user32" Alias "GetActiveWindow" () As Integer
Declare Function SendMessage32 Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
#End If
Sub auto_open()
Dim myIcoFile As String
Dim NewIco
myIcoFile = Application.Path + "\POWERPNT.EXE"
NewIco = ExtractIcon32(0, myIcoFile, 0)
SendMessage32 GetActiveWindow32(), &H80, 1, NewIco
End Sub
Wykorzystujemy tutaj niestandardowe funkcje API, które mają za zadanie zmienić ikonę dla aktywnego okna.
Możesz ten dowcip zrobić wysyłając np. jakiś raport w Excelu.