VBA Excel - Mudando o ícone padrão de uma planilha.

Hello Folks!

Imagine em certo momento do seu dia-a-dia, onde diversas planilhas estão abertas simultaneamente. Isso é raro? Certamente Não. Uma das coisas mais úteis seria identificarmos rapidamente a planilha (ou aplicação MS Excel) que desejamos trabalhar naquele momento.

Quando olhamos para a nossa barra de tarefas do Windows observamos inúmeras planilhas abertas ou ainda pior, olhamos aquele ícone com todos as planilhas agrupadas.

E se...e somente se, pudéssemos atribuir um ícone diferente para cada aplicação MS Excel que estivéssemos usando? Imagine identificarmos a nossa aplicação rapidamente através do seu ícone, seria muito bom! Além disso destacaríamos a nossa aplicação de outras que estivessem rodando nas máquinas dos nossos Clientes.

Mas é possível alterar o ícone de uma planilha específica, ou de várias, que estão rodando em nossa máquina? Tá bom, chega de tortura, segue como é que se faz:

Ao abrir a planilha, solicite que uma das primeiras coisas a serem executadas, seja a nossa SUB ChangeAppIcon:

Private Sub Workbook_Open()
    ' Author:                     Date:                       Contact:                            URL:
    ' André Bernardes      02/03/2011 09:40    bernardess@gmail.com     http://al-bernardes.sites.uol.com.br/
    ' Application: ***
    ' Ao abrir o formulário.
    ' Listening: - .
    ' Re-escrito/Atualizado em: .
    
    Let Application.ScreenUpdating = False
    Let Application.Caption = ".: Minha Aplicação"
    Let Application.StatusBar = "A&A - In Any Place"

    ' Abre um formulário.
    frmSplash.Show

    Call ChangeAppIcon
    Let Application.ScreenUpdating = True
End Sub





Em seguida crie um módulo com o nome de mdl_Functions_PutIcon e cole o código abaixo nele:





Option Explicit








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




Declare Function ExtractIcon32 Lib "SHELL32.DLL" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long








Sub ChangeAppIcon()




    ' Author:                     Date:                       Contact:                            URL:




    ' André Bernardes      02/03/2011 08:14    bernardess@gmail.com     http://al-bernardes.sites.uol.com.br/




    ' Application: 




    ' Modification of code from Excel Experts E-Letter Archives.




    ' Original code By Jim Rech can be found by following this




    ' Listening: - .




    ' Re-escrito/Atualizado em: .









    Dim Icon&




     




    ' Change Icon To Suit




    Const NewIcon$ = "C:\Bernardes\Application.ico" 









    Let Icon = ExtractIcon32(0, NewIcon, 0)




    




    SendMessage32 GetActiveWindow32(), &H80, 1, Icon '< 1 = big Icon




    SendMessage32 GetActiveWindow32(), &H80, 0, Icon '< 0 = small Icon




End Sub







Pronto! Agora você tem a solução para alterar o ícone das suas aplicações desenvolvidas com o MS Excel.

Esse ícone pode ser utilizado como indicador e ser alterado de acordo com um parâmetro, é só utilizar a
sua imaginação, de acordo com a sua necessidade.

Outro aspecto interessante é o de que você também pode utilizar um ícone de arquivo executável, como por
exemplo o Notepad.exe. Basta que coloque o caminho onde ele está no ambiente do Windows que o seu
ícone será mostrado.

Tags: Bernardes, MS, Microsoft, MS Office, Automation, Automação, Aplicação, Application, Icon, ícone, image, change, DLL, API, SendMessage, LIB, USER32.DLL
SHELL32.DLL


André Luiz Bernardes
A&A® - Work smart, not hard.

diHITT - Notícias