Como interagir com sites usando VBA e Internet Explorer: caixas de mensagens
Uma das dificuldates que muitos programadores encontram ao interagir com sites usando VBA e Internet Explorer é como lidar com caixas de mensagens no navegador.

Este post foi originalmente publicado em http://officevbavsto.blogspot.com/2011/06/vba-internet-lidando-com-caixas-de.html
Uma das dificuldates que muitos programadores encontram ao interagir com sites usando VBA e Internet Explorer é como lidar com caixas de mensagens no navegador.

A classe do Internet Explorer não oferece nada para poder lidar com essas caixas de mensagens. A solução é recorrer às APIs do Windows.
Para o caso descrito acima teremos de utilizar duas APIs: SendMessage
e FindWindow
.
O FindWindow
localiza a janela que você quer fechar e SendMessage
envia o comando "fechar" para essa.
No começo do código declare as seguintes linhas:
Public Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Const WM_CLOSE = &H10
OK, agora você pode começar a usar as APIs.
A constante WM_CLOSE
representa o comando "fechar". Você utilizará essa constante como parâmetro na chamada da API SendMessage
.
E agora o código completo:
Sub AcessaPagina()
Dim winHwnd As Long
'[...] Bloco de código que acessa a página, até o momento em que abre a mensagem
winHwnd = FindWindow(vbNullString, "Mensagem da página da Web")
If winHwnd <> 0 Then
SendMessage winHwnd, WM_CLOSE, 0&, 0&
End If
End Sub
-
winHwnd
é uma variável do tipolong
que receberá um número inteiro que representará a janela que você está retornando pela APIFindWindow
. Importante notar que a API FindWindow busca a janela pelo texto do título da mesma. Essa mensagem varia de acordo com o site ou versão de navegador. - E por fim utilizamos a API SendMessage dizendo para ela fechar a janela encontrada. []'s