Ir ao conteúdo
  • Cadastre-se

Excel macro para exportar e atualizar planilha de site com acesso através de log/senha


Ir à solução Resolvido por Basole,

Posts recomendados

Bom dia Pessoal!

 

Estou com a seguinte dúvida, gostaria de exportar uma planilha de um site da internet, porém esse site possui login e senha, e um outro problema, pelo que vi no site não sei se possui aquela flecha para exportar somente os dados que desejo, somente o site todo, nesse caso é possível alterar direto no excel.

Porém preciso de uma macro para realizar todo esse processo de acessar o site e atualizar a planilha, alguém poderia me auxiliar?

No que vamos conversando vou dando mais detalhes.

Link para o comentário
Compartilhar em outros sites

 

Eu utilizo um site que para acessá-lo somente com usuário e senha, ao preencher estas informações ele me transfere para uma página onde há algumas informações que se atualizam diariamente, eu preciso ter estas informações em uma planilha e preciso que elas estejam sempre atualizadas. Eu já achei alguns tutoriais que ensinam a criar uma macro que exporta qualquer informação que eu queira de um site da web, porém quando faço isso com este site ela não funciona, pelo site só ser acessado com usuário e senha. Preciso de uma macro, que acesso o site, preenche o usuário e senha, e exporte para mim as informações que eu preciso. Qualquer dúvida estou a disposição.

 

Link para o comentário
Compartilhar em outros sites

Em 07/03/2022 às 15:21, Murilo_Correa disse:

Eu já achei alguns tutoriais que ensinam a criar uma macro que exporta qualquer informação que eu queira de um site da web, porém quando faço isso com este site ela não funciona,

Não funciona de que forma? Dá alguma mensagem de erro? O problema vai ser colocar o login e senha. No VBA não tem um recurso nativo, mas para contornar isso talvez sendkeys resolva já que essa função simula a digitação.

Link para o comentário
Compartilhar em outros sites

Seguinte, @Basole, se eu tentar explicar talvez eu piore, vou mostrar o que encontrei.

 

Dim HTMLDoc As HTMLDocument
Dim oBrowser As InternetExplorer

Sub Login()

Dim oHTML_Element As IHTMLElement
Dim sURL As String
On Error GoTo Err_Clear
   sURL = simnac.suframa.gov.br
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.usuario.Value = "LOGIN"
  HTMLDoc.all.senha.Value = "SENHA"

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

Next
Err_Clear:

Resume Next
End Sub

 

Esta macro abre o navegador acessa o site e preenche as abas com as informações que colocar nos campos usuario e senha.

Isto me caiu bem, porém o navegador é o problema, preciso de seja o Google Chrome, poderia me auxiliar neste ponto?

Vamos indo por partes pra ver se conseguimos nos entender.

Link para o comentário
Compartilhar em outros sites

44 minutos atrás, Basole disse:

Qual o motivo para não utilizar o internet explorer, já que lhe atende bem?

Este navegador não consegue abrir o site que tento acessar, ele abre o site porém não passa da aba de login.

Firefox ocorre a mesma coisa.

Mesmo que eu tente acessar manualmente.

Link para o comentário
Compartilhar em outros sites

Bom dia,

Já pesquisei mais sobre o Selenium, falei com setor do TI da minha empresa e eles liberaram o download.

Já baixei o mesmo, veio junto no download o Chrome driver, já coloquei lá em referências no VBA o Selenium Type Library.

A princípio está pronto para usar, agora preciso saber como usar kkk se alguém puder me dar uma luz.

Link para o comentário
Compartilhar em outros sites

esta é a tabela que estou importando.

image.thumb.png.1e727a36ffc808343bdbd8b39c6fdfff.png

Preciso estar atualizando estes números a direita diariamente.

o site que utilizo é o simnac.suframa.gov.br

Logo na primeira página do portal aparece a tabela que necessito.

image.thumb.png.ad76c966377239cc9d58f88b9f1d067b.png

 

Agora como faço para estar exportando estes dados através de uma macro?

image.png

Link para o comentário
Compartilhar em outros sites

3 horas atrás, Murilo_Correa disse:

....Já baixei o mesmo, veio junto no download o Chrome driver, já coloquei lá em referências no VBA o Selenium Type Library.

A princípio está pronto para usar, agora preciso saber como usar .....

 

@Murilo_Correa  considerando que já fez os procedimentos de instalação do selenium basic 2.0.9.0 e atualização do chromedriver na pasta do selenium, e tambem ja marcou a referencia "Selenium Type Library" no seu arquivo do Excel

 

Segue uma rotina básica para inserir os dados de login no referido website.

 

Sub Login_Suframa()
 Dim driver As New ChromeDriver

    With driver
    .get "https://simnac.suframa.gov.br"
    .FindElementByName("usuario").SendKeys ("Nome_do_Usuario") ' * AQUI altere usuario
    .FindElementByName("senha").SendKeys ("12345")  ' * AQUI altere senha
    .Wait (1000)
    .FindElementByTag("button").Click
    .Wait (1000)
    End With

End Sub

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

5 minutos atrás, Basole disse:

...Segue uma rotina básica para inserir os dados de login no referido website...

Funcionou perfeitamente, primeiramente ele demorou um pouco para acessar o site porém na segunda vez que executei levou poucos segundos.

O próxima passo agora seria ele importar do site a tabela citada anteriormente.

O que seria mais "fácil", mandar toda vez que ele acessar o site, apagar a tabela antiga e importar a tabela completa, ou estar com a tabela já importada em excel e mandar ele apenas atualizar os valores que preciso?

image.thumb.png.875162c09642c212b8c7e2d2c53db5fb.png

Link para o comentário
Compartilhar em outros sites

A opção que vejo na pagina, nas imagens que enviou é botão Exportar Planilha.

Vai gerar e baixar um novo arquivo com esses dados

Como não tenho acesso a pagina, acredito que seja mais fácil baixar e depois importar esses novos dados para sua planilha.

 

image.png.5a183de4f3e67e13f9d63cd058bc3d0e.png

 

Edit:

@Murilo_Correa se tiver a opção de exportar a tabela no formato html, tambem seria uma boa opção para automatizar a importação dos para sua planilha

 

Edit 2:

@Murilo_Correa

Com a tela do console (F12) aberta, aperte as [ ctrl + f ] p/ pesquisar, e digite Exportar Planilha e tire um print do da tela.

 

 

Link para o comentário
Compartilhar em outros sites

59 minutos atrás, Basole disse:

Se tiver a opção de exportar a tabela no formato html, tambem seria uma boa opção para automatizar a importação dos para sua planilha...

 

Certo entendo, porém esta planilha que estou fazendo não serei eu que irei utilizar, é uma pessoa que não entende nada da parte de excel e tem dificuldade por ter uma certa idade, por isto estou tentando deixar o mais automatizada possível, eu iria adicionar a macro em um botão para ela apenas clicar e atualizar as informações.

A questão de exportar em HTML só se for por outro meio que desconheço, a opção apresentada pelo site realiza o download automático em formato de excel.

image.png.10979209cf07e36e6518698de6dfa7e9.png

Sempre que exporto a planilha do site ele manda para a pasta de downloads a planilha.

image.png.da1243706fb6b6be157ea48a94b304a4.png

Seria possível automatizar o VBA para ele clicar no botão de exportar a planilha, e uma macro separada realizando o PROCV das células que preciso?

59 minutos atrás, Basole disse:

Edit 2:

Com a tela do console (F12) aberta, aperte as [ ctrl + f ] p/ pesquisar, e digite Exportar Planilha e tire um print do da tela.

 

 

 

Edit:

 

Já mandei na resposta anterior mas segue mais completa.

image.png.ea38a2b4ab2410cb04042c893dddf374.png

 

Edit2:

@Basole

1 hora atrás, Basole disse:
Sub Login_Suframa()
 Dim driver As New ChromeDriver

    With driver
    .get "https://simnac.suframa.gov.br"
    .FindElementByName("usuario").SendKeys ("Nome_do_Usuario") ' * AQUI altere usuario
    .FindElementByName("senha").SendKeys ("12345")  ' * AQUI altere senha
    .Wait (1000)
    .FindElementByTag("button").Click
    .Wait (1000)
    End With

End Sub

 

Referente este código há um único problema, no FindElementByTag, ele procura o primeiro botão presente na página,

porém este botão não é o entrar.

image.thumb.png.5af7986bd49bd2c76ca12cbfd64ef526.png

Sendo assim ele acessa a aba de pesquisa fora do perfil, onde não se encontra a tabela que preciso.

Link para o comentário
Compartilhar em outros sites

26 minutos atrás, Murilo_Correa disse:

Sempre que exporto a planilha do site ele manda para a pasta de downloads a planilha.

image.png.da1243706fb6b6be157ea48a94b304a4.png

Seria possível automatizar o VBA para ele clicar no botão de exportar a planilha, e uma macro separada realizando o PROCV das células que preciso?

 

Sim dá para automatizar todo esse processo de importação desde que o arquivo siga um padrão de formatação.

 

Para importar a planilha do site, experimente acrescentar a linha abaixo no final do código

 

.FindElementByLinkText("Exportar Planilha").Click

 

Edit.

@Murilo_Correa

Vendo as novas imagens, atualizei abaixo

 

.FindElementByLinkText(" Exportar Planilha ").Click

 

Link para o comentário
Compartilhar em outros sites

3 horas atrás, Murilo_Correa disse:

.....Referente este código há um único problema, no FindElementByTag, ele procura o primeiro botão presente na página,

porém este botão não é o entrar.

Sendo assim ele acessa a aba de pesquisa fora do perfil, onde não se encontra a tabela que preciso.

 

@Murilo_Correa quanto a este problema com o botão ENTRAR, altere no código a linha:

 

 .FindElementByTag("button").Click

 

Por esta: 

 

.FindElementByXPath("/html/body/app-root/div/div/div/section/section/footer/button", 5).Click

 

Link para o comentário
Compartilhar em outros sites

9 minutos atrás, Basole disse:

... quanto a este problema com o botão ENTRAR, altere no código a linha:...

@BasoleQuanto este problema foi resolvido, agora ele acessa pelo botão correto.

Porém surgiu o seguinte.

 

image.png.cd2750b72b6c28c8d9ea3a961932dc66.png

 

Ao abrir a página após o login, há um pequeno delay até carregar a tabela e a opção de exportar planilha, pode ser este o problema?

Link para o comentário
Compartilhar em outros sites

Sim, se está demorando para carregar pode ser isso

É bom acrescentar uma "espera" de 3 segendos antes dessa linha :

.Wait (3000)

 

De qualquer forma para ter mais certeza, na tela do console 

image.png.08033054f3ff19c938664a2b3d23d48e.png

Onde esta destacado em amarelo, coloque o o cursor e com o botão direito do mouse click em Copy e em seguinda em Copy XPath e cole na sua resposta/post

 

image.png.745fe14966a23c26060b573b79510bea.png

 

Link para o comentário
Compartilhar em outros sites

6 minutos atrás, Basole disse:

...Onde esta destacado em amarelo, coloque o o cursor e com o botão direito do mouse click em Copy e em seguinda em Copy XPath e cole na sua resposta/post...

 

@Basole A parte de aumentar os segundos no wait não funcionou.

Segue como solicitado.

//*[@id="content"]/section/section/section/section/app-consultar-quadro-pin/div/div/div/section/form/header/h2/div/button/text()

Link para o comentário
Compartilhar em outros sites

25 minutos atrás, Basole disse:

A partir daqui não tem como eu testar,

Experimente substituir esta linha:

 

.FindElementByXPath("//*[@id=""content""]/section/section/section/section/app-consultar-quadro-pin/div/div/div/section/form/header/h2/div/button/text()", 5).Click

 

 

@Basoleeu notei que ele estava apresentando uma mensagem de erro, então fiz um teste, apaguei o "/text()" e executei.

Primeiramente não fazia o download porém não apresentava o erro, então notei que fazendo o download manualmente ele também possui um pequeno delay até baixar o arquivo, e assim que vba executava a ação de clicar no botão ele fechava o navegador, então coloquei um wait depois desta linha e coloquei em 5000 e funcionou, ele faz o download e fecha o navegador.

Este primeiro passo de exportar a planilha esta 100%!!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Bom dia @Basole,

 

Agora resta a criação no VBA dos PROCV.

Está primeira imagem é onde eu preciso que esteja atualizado (tive que deixar deste tamanho para poder tirar o print da tabela completa.

image.png.062274831b25b469d477364fd83a0623.png

 

Imagem abaixo é da planilha que é exportada pelo site.

image.png.179a033aec78ca7309965ce38df913ad.png

 

Local da planilha.

 

C:\Users\murilo.rosa\Downloads\relatorio_quadro_pin

 

Link para o comentário
Compartilhar em outros sites

@Murilo_Correa bom dia!

 

Temos duas imagens de planilhas semelhantes, e voce precisa atualizar os dados a primeira a com a segunda.

Mas se voce fosse atualizar manualmente, quais celulas estariam envolvidas ?

 

Só lembrando que somos voluntários aqui, e ficar analisando dados fora da nossa área é complicado.

 

Link para o comentário
Compartilhar em outros sites

59 minutos atrás, Basole disse:

Temos duas imagens de planilhas semelhantes, e voce precisa atualizar os dados a primeira a com a segunda.

Mas se voce fosse atualizar manualmente, quais celulas estariam envolvidas ?

 

Boa tarde,

 

Para buscar as informações que preciso, montei a seguinte formula.

=PROCV(B6;[relatorio_quadro_pin.xlsx]Plan1!$B$5:$H$20;4;0)

agora eu iria aplicar na célula E6 até H20, diversos PROCV para trazer as informações da tabela pega na internet.

A intenção é que a tabela 1 (da planilha que estamos automatizando) seja um espelho da tabela 2 (exportada do site), atualizando diariamente os valores nas células entre E5 e H20

Imagem abaixo da tabela 1 dei uma "formatada" nela pra ficar mais fácil a aplicação dos PROCV.

image.png.d482e568f06366811ee8c7fb64925532.png

Estou tentando ser o mais claro possível, devido o controle de tráfego que há na minha empresa fica complicado eu realizar o envio das planilhas.

Link para o comentário
Compartilhar em outros sites

@Murilo_Correa bom dia,

 

Acho que seria mais rápido e mais prático, se conseguirmos "puxar" os dados diretamente do site, podemos tentar mesmo sem eu ter acesso a página?

 

Na pagina da tabela, no campo: NF e importada selecione e com o botão direito do mouse click em inspecionar, na tela de console pesquise por NF e importada e copie o xpath, e tambem tire um print desta tela.

Link para o comentário
Compartilhar em outros sites

51 minutos atrás, Basole disse:

@Murilo_Correa bom dia,

 

Na pagina da tabela, no campo: NF e importada selecione e com o botão direito do mouse click em inspecionar, na tela de console pesquise por NF e importada e copie o xpath, e tambem tire um print desta tela.

@BasoleBom dia!

 

Xpath:

//*[@id="content"]/section/section/section/section/app-consultar-quadro-pin/div/div/div/section/form/div/table/tbody/tr[1]/td[3]/text()[2]

image.thumb.png.f67f7a20acf1b439ef78e0e46e8de358.png

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!