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 = FalseLet Application.Caption = ".: Minha Aplicação"Let Application.StatusBar = "A&A - In Any Place"' Abre um formulário.
frmSplash.Show
Call ChangeAppIconLet Application.ScreenUpdating = TrueEnd 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 LongSub 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 IconEnd 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