Vídeo recomendado
https://youtu.be/diWPPPhW-9E

PEGAR SPAN DE HTML USANDO VBA

A Web está aí, não há como negar. Ela é onipresente em praticamente toda operação eletrônica realizada nos dias de hoje. Como não podia ser diferente, o Excel, ferramenta máxima para analistas e profissionais das mais diversas áreas do mercado precisa estar alinhado com esta necesssidade. E ele está! Neste forum, o debate é focado em expor dúvidas, sugestões, modelos de código e exemplos de uso do Excel na Integração com tecnologias Web.
GuiGarnize
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Sex Abr 10, 2020 12:00 am

PEGAR SPAN DE HTML USANDO VBA

Mensagem por GuiGarnize »

Estou cirando um programa para poder automatizar a pesquisa do status do IRPF... porém, eu nao tenho muito conhecimento de HTML, na verdade nao sei nada sobre...
Pesquisando um pouco, consegui fazer o login no site da receita federal. e acessar a pagina que eu preciso pegar a informação, agora nao sei como fazer...
meu código para acessar o site está assim

Código: Selecionar todos

Dim HTMLDoc As HTMLDocument
Dim oBrowser As InternetExplorer
Dim cpf, pass, codAce As String

Sub Login()
Dim oHTML_Element As IHTMLElement
Dim sURL As String
On Error GoTo Err_Clear
   sURL = "https://cav.receita.fazenda.gov.br/autenticacao/login/index"

cpf = FormDados.txtCpf
codAce = FormDados.txtCodAce
pass = FormDados.txtPass

Set oBrowser = New InternetExplorer
   oBrowser.Silent = True
   oBrowser.timeout = 60
   oBrowser.Navigate sURL
   oBrowser.Visible = True

Do
Loop Until oBrowser.ReadyState = READYSTATE_COMPLETE

Set HTMLDoc = oBrowser.Document
  HTMLDoc.all.NI.Value = cpf
  HTMLDoc.all.CodigoAcesso.Value = codAce
  HTMLDoc.all.Senha.Value = pass


For Each oHTML_Element In HTMLDoc.getElementsByTagName("input")
    If oHTML_Element.Type = "submit" Then oHTML_Element.Click: Exit For

Next
sURL = "https://www3.cav.receita.fazenda.gov.br/extratodirpf/"

oBrowser.Navigate sURL
oBrowser.Visible = True
Err_Clear:

Resume Next
End Sub
E eu preciso que no Label lblStatus do meu formulário, apareça o Status da declaração de cada ano...
o Elemento que eu preciso é o que está na foto anexa.

Imagem
Anexos
Sem título.png
Sem título.png (211.62 KiB) Exibido 10139 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Nill2016
Colaborador
Colaborador
Mensagens: 32
Registrado em: Qua Mai 09, 2018 11:34 am

Re: PEGAR SPAN DE HTML USANDO VBA

Mensagem por Nill2016 »

Eu recomendo que você use o Selenium em conjunto com extensão ChroPath no Chrome ou no Firefox. Ela extrai o Xpath de cada elemento que precisar, e com isso fica mais fácil fazer o código.


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: PEGAR SPAN DE HTML USANDO VBA

Mensagem por Mikel Silveira Fraga »

Gui, boa noite.

Pelo que vi da imagem, você pode perceber que essa Span esta localizada dentro de uma árvore de elementos, sendo uma dela o Li (List Item) de um elemento UL (Lista Não Ordenada).

Essa Li possui um Atributo Id (id = menu_item_2020), que pode ser acessado utilizando o método getElementById. Depois que conseguir acessar esse elemento, pode utilizar a Propriedade innerText, para recuperar todo o texto que esta localizado no Status da página, no caso "2020 Não Entregue". Ai, é só tratar o 2020 com um Replace (Método para Substituição de Textos) e retornar esse valor para seu Label.

Essa seria a lógica do seu processo.

Porém, a sugestão do Nill, em utilizar o Selenium e as extensões, vão reduzir seu trabalho, tirando que Internet Control e Internet Explorer estão morrendo.

Uma dica a mais, eu não usaria as extensões para geração do xPath, mas sim estudaria como construí-las manualmente, pois as chances de conseguir um resultado muito mais assertivo e sem problemas futuros, é muito maior. Mas como disse, é só uma dica.

Espero ter ajudado. Abraços e excelente final de semana.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder