Olá,
Boa tarde.
Estou desenvolvendo uma macro no Access que interage com o internet explorer, consigo manipular todos os botões(inserir, reconhecer, extrair), porém tenho um problema quando o assunto é dar um comando do windows(ex.: enter).
Já tentei vários que achei em outros sites, do tipo (Application.SendKeys "~"), da erro na macro *erro de compilação, metodo ou membro de dados não encontrado
o exemplo abaixo foi encontrado na internet:
Agradeço o apoio!!
Boa tarde.
Estou desenvolvendo uma macro no Access que interage com o internet explorer, consigo manipular todos os botões(inserir, reconhecer, extrair), porém tenho um problema quando o assunto é dar um comando do windows(ex.: enter).
Já tentei vários que achei em outros sites, do tipo (Application.SendKeys "~"), da erro na macro *erro de compilação, metodo ou membro de dados não encontrado
o exemplo abaixo foi encontrado na internet:
- Código:
Sub ExemploBuscaGoogle()
On Error Resume Next
Dim i As Long
Dim ie As Object
Dim objElement As Object
Dim objCollection As Object
'Dim Wait As Object
'Dim SendKeys As Object
' Cria instância do IE
Set ie = CreateObject("InternetExplorer.Application")
' Define o endereço a ser carregado
ie.Navigate ("https://www.google.com.br")
' Define se a janela do IE será ou não exibida
ie.Visible = True
' Espera carregar. A espera aqui está definida para 1 segundo,
' mas pode ser ajustada dependendo da necessidade.
Do While ie.Busy
Application DateAdd("s", 1, Now) '.Wait
Loop
' Busca campos tipo input, uma vez que queremos acessar o campo de busca.
' Sabemos que o campo é tipo input porque analisamos o código HTML da página do Google.
' O método getElementByTagName retorna todas as TAGs HTML da página carregada com o nome desejado.
Set objCollection = ie.Document.getElementsByTagName("input")
' Varre os inputs do HTML procurando pelos elementos desejados
' Queremos encontrar o elemento input com name = "q"
' Uso o while aqui mas poderia usar o 'for each'
i = 0
While i < objCollection.Length
' "q" é o nome do campo de busca, como visto no código HTML
teste = objCollection(i).Name
If objCollection(i).Name = "q" Then
' Preenche o campo de busca com o que queremos
objCollection(i).Value = "dicasspss.blogspot.com"
End If
i = i + 1
Wend
' Após preenchermos o campo de pesquisa mandamos um 'enter' para o sistema.
' No método SendKeys o 'enter' é representado pelo símbolo ~
Application.SendKeys ("~")
' Esperamos novamente o IE carregar a página.
' Note que o codigo aqui realiza uma espera de 1 segundo
' mesmo sem verificar se o IE está ocupado.
' Isso é uma boa estratégia pois diversos sites passam por
' mais de uma janela após submeter informações
' a um formulário. Então a espera tenta garantir que a janela
' final esteja carregada.
'Application.Wait DateAdd("s", 1, Now)
Do While ie.Busy
' Application.Wait DateAdd("s", 1, Now)
Loop
' Agora temos que buscar o primeiro link do primeiro resultado.
' Novamente temos que analisar o HTML, agora da página de resultados.
' Buscamos as tags 'li' onde class = 'g' da página, pois é onde estão os resultados.
' Novamente, sabemos pela análise do HTML.
Set objCollection2 = ie.Document.getElementsByTagName("li")
' Dentre as tags 'li' buscamos a primeira com classe 'g'
For Each elemento In objCollection2
' "q" é o nome do campo de busca, como visto no código HTML
teste1 = elemento.Name
If elemento.className = "g" Then
' Mostra a msgbox com o texto do primeiro resultado
MsgBox elemento.innerText
Exit For
End If
Next
' Fecha a instância do IE
ie.Quit
End Sub
Agradeço o apoio!!