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

[Resolvido] Selenium - .AsTable().ToExcel substitui ponto por vírgula

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.
sergio_lara
Colaborador
Colaborador
Mensagens: 14
Registrado em: Ter Jun 11, 2019 6:19 pm

[Resolvido] Selenium - .AsTable().ToExcel substitui ponto por vírgula

Mensagem por sergio_lara »

Olá.
Sou novo no forum, iniciante em VBA e iniciante em Selenium.
A partir dos vídeos do Tomás Vasquez elaborei alguns códigos para webscraping de dados do site da bolsa de valores. Tenho conseguido importar os dados com .AsTable().ToExcel, mas quando eu importo tabelas que contém ponto como separador de milhares, nos casos em que tenho apenas um ponto (até 999.999), os dados são colados no excel como se o ponto fosse uma vírgula (por exemplo 999,999), enquanto as células que contém mais de um ponto (a partir de 1.000.000) o ponto é mantido.

Gostaria que a importação retornasse apenas ponto, como no texto de origem. Também serviria, se ele eliminasse os pontos.
Sei que para substituir no VBA se usa .Replace, mas não sei como usar o replace com o Selenium Webdriver na importação.
Agradeço se puderem me ajudar.
Segue o código que estou utilizando.

Código: Selecionar todos

Sub BuscaDFP2()
    Dim driver As WebDriver
    Set driver = New ChromeDriver
    Dim CodCVM As Integer
    Dim NomePregao As String
    Dim novaPlanilha As Worksheet

    'Abre a página que contém os dados
    driver.Get "https://www.rad.cvm.gov.br/enetconsulta/frmGerenciaPaginaFRE.aspx?CodigoTipoInstituicao=1&NumeroSequencialDocumento=14699"
    
    'Seleciona o Frame que contem os dados
    driver.SwitchToFrame ("iFrameFormulariosFilho")
    
    'Exporta a tabela para o excel
    driver.FindElementByXPath("//*[@id=""ctl00_cphPopUp_tbDados""]/tbody").AsTable().ToExcel (ActiveSheet.Cells(1, 1))

    driver.Quit
End Sub
Anexos
AsTable ToExcel.jpg
AsTable ToExcel.jpg (615.58 KiB) Exibido 11116 vezes
Editado pela última vez por sergio_lara em Ter Jun 25, 2019 3:03 pm, em um total de 1 vez.


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.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Selenium - .AsTable().ToExcel substitui ponto por vírgula

Mensagem por webmaster »

Sergio,

Além do ToExcel, o AsTable() também tem a propriedade Data. Ela retorna um array com os dados da tabela para você fazer o que quiser com eles antes de e se for transportá-los para a planilha.

Exemplo do próprio selenium basic:

Código: Selecionar todos

Private Sub Handle_Table2()
  Dim driver As New FirefoxDriver
  driver.Get "http://the-internet.herokuapp.com/tables"
  
  Dim tbl As TableElement
  Set tbl = driver.FindElementByCss("#table1").AsTable
  
  'Print all cells
  Dim data(): data = tbl.data
  For c = 1 To UBound(data, 1)
    For r = 1 To UBound(data, 1)
      Debug.Print data(r, 2)
    Next
    Debug.Print Empty
  Next
  
  driver.Quit
End Sub


sergio_lara
Colaborador
Colaborador
Mensagens: 14
Registrado em: Ter Jun 11, 2019 6:19 pm

Re: [Resolvido] Selenium - .AsTable().ToExcel substitui ponto por vírgula

Mensagem por sergio_lara »

Muito Obrigado, Tomás. Não esperava que a resposta fosse tão rápida.

Não sei se usei da forma mais correta, mas está dando certo aqui pra mim.

Segue o código:

Código: Selecionar todos

Private Sub BuscaDFP()
  Dim driver As New ChromeDriver
  driver.Get "https://www.rad.cvm.gov.br/enetconsulta/frmGerenciaPaginaFRE.aspx?CodigoTipoInstituicao=1&NumeroSequencialDocumento=14699"
  driver.SwitchToFrame ("iFrameFormulariosFilho")
  
  Dim tbl As TableElement
  Set tbl = driver.FindElementByXPath("//*[@id=""ctl00_cphPopUp_tbDados""]/tbody").AsTable
  
  Dim data(): data = tbl.data
  For c = 1 To UBound(data, 1)
    For r = 1 To UBound(data, 1)
        Cells(r, 1).Value = Replace(data(r, 1), ".", ";")
        Cells(r, 2).Value = data(r, 2)
        Cells(r, 3).Value = Replace(data(r, 3), ".", "")
        Cells(r, 4).Value = Replace(data(r, 4), ".", "")
        Cells(r, 5).Value = Replace(data(r, 5), ".", "")
    Next
    
  Next
  
  driver.Quit
End Sub



Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: [Resolvido] Selenium - .AsTable().ToExcel substitui ponto por vírgula

Mensagem por webmaster »

Ótimo!

Quanto a respostas rápidas, melhor não se acostumar. Ás vezes acontece de ela estar na ponta da língua, como foi caso, mas, na maioria das vezes, tem todo um processo de análise antes de conseguir ajudar no problema. Creio que isso valha para todos do fórum.

Abraços e bem vindo!


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