O VBA permite manipular diversas propriedades do aplicativo em que está hospedado.
Porém, quando avançamos no desenvolvimento, é interessante poder personalizar o aplicativo de modo completo. Suítes de desenvolvimento mais avançados como o Visual Studio e Delphi permite fazer isso facilmente. No VBA isso também é possível, porém com um pouco mais de trabalho.
O código abaixo troca o ícone do aplicativo para um determinado arquivo do tipo .ico:
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 ChangeApplicationIcon() Dim Icon& 'Troca o ícone Const NewIcon$ = "c:\temp\app.ico" Icon = ExtractIcon32(0, NewIcon, 0) SendMessage32 GetActiveWindow32(), &H80, 1, Icon SendMessage32 GetActiveWindow32(), &H80, 0, Icon End Sub |
O código faz referência a um arquivo .ico, porém, é possível referenciar arquivos do tipo .dll e .exe que possuam ícones agregados como a calculadora do Windows. Para testar, troque o valor “C:\temp\app.ico” para “calc.exe”.
Atenção: Se executar o aplicativo no contexto do VBA, clicando em F5, o ícone alterado será o do próprio Visual Basic Editor.
Abraços
Tomás Vásquez
Fonte: http://j-walk.com/ss/