Zmiana ikony Excela

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.

Pobierz przykładowy plik

Jeśli artykuł Ci się podobał, będę wdzięczny gdy go udostępnisz w mediach społecznościowych
Ten wpis został opublikowany w kategorii ciekawe kawałki kodu, Kawały biurowe. Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.