Página 1 de 1

PEGAR SPAN DE HTML USANDO VBA

Enviado: Sex Abr 10, 2020 4:55 pm
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

Re: PEGAR SPAN DE HTML USANDO VBA

Enviado: Sáb Mai 29, 2021 4:16 pm
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.

Re: PEGAR SPAN DE HTML USANDO VBA

Enviado: Dom Mai 30, 2021 1:47 am
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.