Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Interação de planilha com página na web - VBA
-
- Acabou de chegar
- Mensagens: 2
- Registrado em: Qua Jul 14, 2021 11:55 am
- Contato:
Interação de planilha com página na web - VBA
Olá a todes!
Agradeço a oportunidade em poder usufruir do conhecimento compartilhado aqui, e espero poder contribuir também.
Vamos a minha questão.... Trabalho em um serviço da Assistência Social, ligado à prefeitura da cidade de São Paulo, e possuo um banco de dados com cerca de 1200 usuários, que neste consta nome completo, endereço, telefones, etc... Mas preciso consultar o número do Cadastro Único (NIS) desses usuários no site “meucadunico.cidadania.gov.br/meu_cadunico/”. Nesse site há uma captcha, então não consigo automatizar essa consulta por completo, consegui elaborar uma programação que agiliza essa consulta preenchendo os campos de “Nome do usuário” e “Nome da mãe do usuário”, mas não consigo faze-lo preencher o campo de “Data de Nascimento” e duas listas suspensas de “Cidade e Estado”.
Aqui neste fórum encontrei alguns tópicos que automatizam a abertura deste site em uma nova guia do navegador Opera (que é o que prefiro utilizar), mas há algo relacionado ao DirectX que impossibilita a criação de Objeto, o que por sua vez, impossibilita que minha programação converse com as caixas de texto neste navegador, logo tive que optar em utilizar o Internet Explorer.
Por fim, necessito conseguir agilizar o preenchimento do campo em formato de data e interagir com a caixa suspensa. Se houver algo para passar pelo captcha será ótimo também.
Segue o que já elaborei:
Sub CadUnico()
Sheets("Lista Geral").Select
Set ie = CreateObject("InternetExplorer.Application")
ie.navigate "https://meucadunico.cidadania.gov.br/meu_cadunico/"
ie.Visible = True
'Do While ie.busy And ie.readyState <> "READYSTATE_COMPLETE"
'DoEvents
'Loop
' Nome
ie.document.getElementsByTagName("input")(0).Value = Cells(2, 6).Value
'Mãe
ie.document.getElementsByTagName("input")(2).Value = Cells(2, 19).Value
'Nascimento
ie.document.getElementsByTagName("input")(8).Value = Cells(2, 18).Value
'Estado
'ie.document.getElementsByTagName("td")(0).Value = (35)
End Sub
Sub opera()
Sheets("Lista Geral").Select
Dim ie As String
ie = """C:\Users\Home\AppData\Local\Programs\Opera\launcher.exe"""
Shell (ie & " -url https://meucadunico.cidadania.gov.br/meu_cadunico/")
End Sub
Agradeço a oportunidade em poder usufruir do conhecimento compartilhado aqui, e espero poder contribuir também.
Vamos a minha questão.... Trabalho em um serviço da Assistência Social, ligado à prefeitura da cidade de São Paulo, e possuo um banco de dados com cerca de 1200 usuários, que neste consta nome completo, endereço, telefones, etc... Mas preciso consultar o número do Cadastro Único (NIS) desses usuários no site “meucadunico.cidadania.gov.br/meu_cadunico/”. Nesse site há uma captcha, então não consigo automatizar essa consulta por completo, consegui elaborar uma programação que agiliza essa consulta preenchendo os campos de “Nome do usuário” e “Nome da mãe do usuário”, mas não consigo faze-lo preencher o campo de “Data de Nascimento” e duas listas suspensas de “Cidade e Estado”.
Aqui neste fórum encontrei alguns tópicos que automatizam a abertura deste site em uma nova guia do navegador Opera (que é o que prefiro utilizar), mas há algo relacionado ao DirectX que impossibilita a criação de Objeto, o que por sua vez, impossibilita que minha programação converse com as caixas de texto neste navegador, logo tive que optar em utilizar o Internet Explorer.
Por fim, necessito conseguir agilizar o preenchimento do campo em formato de data e interagir com a caixa suspensa. Se houver algo para passar pelo captcha será ótimo também.
Segue o que já elaborei:
Sub CadUnico()
Sheets("Lista Geral").Select
Set ie = CreateObject("InternetExplorer.Application")
ie.navigate "https://meucadunico.cidadania.gov.br/meu_cadunico/"
ie.Visible = True
'Do While ie.busy And ie.readyState <> "READYSTATE_COMPLETE"
'DoEvents
'Loop
' Nome
ie.document.getElementsByTagName("input")(0).Value = Cells(2, 6).Value
'Mãe
ie.document.getElementsByTagName("input")(2).Value = Cells(2, 19).Value
'Nascimento
ie.document.getElementsByTagName("input")(8).Value = Cells(2, 18).Value
'Estado
'ie.document.getElementsByTagName("td")(0).Value = (35)
End Sub
Sub opera()
Sheets("Lista Geral").Select
Dim ie As String
ie = """C:\Users\Home\AppData\Local\Programs\Opera\launcher.exe"""
Shell (ie & " -url https://meucadunico.cidadania.gov.br/meu_cadunico/")
End Sub
Re: Interação de planilha com página na web - VBA
Boa tarde Zequi!
Sinceramente falando, a interação entre VBA e web não é uma das melhores, então geralmete sera dificil fazer qualquer coisa entre eles. Por isso geralmente opto por outras linguagens.
Mas ainda bem que tenho esses códigos VBA que colhem os dados do CNPJ no site da receita. Só descambar pro site desejado. Tambem aconselho que dê uma olhada nesse tópico:
http://www.tomasvasquez.com.br/forum/vi ... php?t=7301
E nesses sites:
https://pedroabs.wordpress.com/2015/11/ ... rvico-web/
http://www.macoratti.net/08/06/aspn_cpt1.htm
Valew!
Sinceramente falando, a interação entre VBA e web não é uma das melhores, então geralmete sera dificil fazer qualquer coisa entre eles. Por isso geralmente opto por outras linguagens.
Mas ainda bem que tenho esses códigos VBA que colhem os dados do CNPJ no site da receita. Só descambar pro site desejado. Tambem aconselho que dê uma olhada nesse tópico:
http://www.tomasvasquez.com.br/forum/vi ... php?t=7301
E nesses sites:
https://pedroabs.wordpress.com/2015/11/ ... rvico-web/
http://www.macoratti.net/08/06/aspn_cpt1.htm
Valew!
Re: Interação de planilha com página na web - VBA
Caso tenha conseguido sucesso em seu problema, favor colocar "[RESOLVIDO]" no título do tópico.
Re: Interação de planilha com página na web - VBA
Ezequiel
Seu problema é fácil de resolver visto que não precisa lidar com o Recaptha, se precisasse tbm seria possível porém teria que contratar um serviço web R$
Fiz um teste com Internet Explorer e constatei que esse site tem alguma incompatibilidade (provavelmente JavaScript) com esse navegador, quando seleciona o Estado não libera a opção pra escolher a Cidade, simplesmente não carrega. Testei manualmente e foi a mesma coisa.
Escolhi fazer pelo Chrome usando a biblioteca Selenium Basic, você pode aprender como instalar neste video .
Fora isso basta fazer os devidos ajustes na seleção de Estado e Cidade, sugiro selecionar pelo texto ou pelo valor, inclui exemplos dessas duas formas.
Existem apenas 27 opções de texto/valor para selecionar um estado, vai ser fácil mapear, porém na Cidade deve quebrar um pouco a cabeça pra selecionar se o texto da cidade na sua planilha não for idêntico ao texto no site. Deixar esse pequeno desafio pra vc
Seu problema é fácil de resolver visto que não precisa lidar com o Recaptha, se precisasse tbm seria possível porém teria que contratar um serviço web R$
Fiz um teste com Internet Explorer e constatei que esse site tem alguma incompatibilidade (provavelmente JavaScript) com esse navegador, quando seleciona o Estado não libera a opção pra escolher a Cidade, simplesmente não carrega. Testei manualmente e foi a mesma coisa.
Escolhi fazer pelo Chrome usando a biblioteca Selenium Basic, você pode aprender como instalar neste video .
Fora isso basta fazer os devidos ajustes na seleção de Estado e Cidade, sugiro selecionar pelo texto ou pelo valor, inclui exemplos dessas duas formas.
Existem apenas 27 opções de texto/valor para selecionar um estado, vai ser fácil mapear, porém na Cidade deve quebrar um pouco a cabeça pra selecionar se o texto da cidade na sua planilha não for idêntico ao texto no site. Deixar esse pequeno desafio pra vc
Código: Selecionar todos
Sub CadUnico()
Dim driver As New ChromeDriver
driver.Get "https://meucadunico.cidadania.gov.br/meu_cadunico/"
driver.FindElementById("nome").SendKeys ("Nome")
driver.FindElementById("datepicker1").SendKeys ("15/07/2021")
driver.FindElementById("mae").SendKeys ("Mãe")
driver.FindElementById("uf_ibge").AsSelect.SelectByValue (12)
driver.Wait (1000)
driver.FindElementById("p_ibge").AsSelect.SelectByText ("CRUZEIRO DO SUL")
End Sub
-
- Acabou de chegar
- Mensagens: 2
- Registrado em: Qua Jul 14, 2021 11:55 am
- Contato:
Re: Interação de planilha com página na web - VBA
Raygsson, meu querido, tu não tem ideia da felicidade que me trouxe nessa sua resposta. Vou testar o quão antes, tô quebrando a cabeça uns bons meses com esse problema rsrs. Muito Obrigado pela atenção!!!!!!!Raygsson escreveu: ↑Qui Jul 15, 2021 11:27 pm Ezequiel
Seu problema é fácil de resolver visto que não precisa lidar com o Recaptha, se precisasse tbm seria possível porém teria que contratar um serviço web R$
Fiz um teste com Internet Explorer e constatei que esse site tem alguma incompatibilidade (provavelmente JavaScript) com esse navegador, quando seleciona o Estado não libera a opção pra escolher a Cidade, simplesmente não carrega. Testei manualmente e foi a mesma coisa.
Escolhi fazer pelo Chrome usando a biblioteca Selenium Basic, você pode aprender como instalar neste video .
Fora isso basta fazer os devidos ajustes na seleção de Estado e Cidade, sugiro selecionar pelo texto ou pelo valor, inclui exemplos dessas duas formas.
Existem apenas 27 opções de texto/valor para selecionar um estado, vai ser fácil mapear, porém na Cidade deve quebrar um pouco a cabeça pra selecionar se o texto da cidade na sua planilha não for idêntico ao texto no site. Deixar esse pequeno desafio pra vc
estado.JPGCódigo: Selecionar todos
Sub CadUnico() Dim driver As New ChromeDriver driver.Get "https://meucadunico.cidadania.gov.br/meu_cadunico/" driver.FindElementById("nome").SendKeys ("Nome") driver.FindElementById("datepicker1").SendKeys ("15/07/2021") driver.FindElementById("mae").SendKeys ("Mãe") driver.FindElementById("uf_ibge").AsSelect.SelectByValue (12) driver.Wait (1000) driver.FindElementById("p_ibge").AsSelect.SelectByText ("CRUZEIRO DO SUL") End Sub
cidade.JPG