Fórum Excel Bácico, Avançado e Vba

Este fórum é destina a usuário de Excel, que queiram compartilhar informações a básicas, avançadas e programação em VBA...
 
InícioInício  FAQFAQ  BuscarBuscar  MembrosMembros  GruposGrupos  Registrar-seRegistrar-se  Login  

Compartilhe | 
 

 Extrair dados de uma página do IE

Ver o tópico anterior Ver o tópico seguinte Ir em baixo 
AutorMensagem
marvinmv



Mensagens : 6
Data de inscrição : 04/05/2013

MensagemAssunto: Extrair dados de uma página do IE   Sab Maio 04, 2013 1:00 am

Olá pessoal,
é a minha primeira vez no fórum e pelo que vi vocês são bem presentes, isso é bem legal.
eu gostaria de uma ajuda dos veteranos no VBA do Excel. No momento surgiu uma necessidade de extrair alguns dados
de um site e estou tendo dificuldade com a biblioteca do Internet Explorer. Devido ao primeiro contato com a biblioteca estou perdido entre que classes usar, etc! então vou mostrar o que exatamente eu gostaria de extrair. Qualquer coisa podem me corrigir, eu posso estar seguindo o caminho errado.
---------------------------------------------------------------------------------------
usando a ferramenta do desenvolvedor, em Properties:

>properties
>html
>children:HtmlCollection[2]
>1:frameset
>ChildNodes:NodeList[5]
>3:frame#frmMain
>ContentDocument:document
>All:HtmlAllCollection[114]
>[0...99]
>21:td
>innertext
>22:
>innertext
...
...
>55
>innertext


Esse é o caminho dos dados que preciso que estão em innertext, mas não consigo fazer referência a esses textos.
Se alguém souber como fazer esses links e jogar para uma célula da planilha me expliquem por favor.

Obrigado desde já!!
Abraço.

Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Extrair dados de uma página do IE   Sab Maio 04, 2013 3:12 am

Boa noite!!

Veja se ajuda:
http://vbcity.com/forums/t/126217.aspx

Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
marvinmv



Mensagens : 6
Data de inscrição : 04/05/2013

MensagemAssunto: Re: Extrair dados de uma página do IE   Sab Maio 04, 2013 8:45 pm

AlexandreVBA

obrigado pela resposta! Vou aplicar esses códigos no meu problema e segunda retorno com o resultado. Pelo que entendi ele extrai tudo da pagina, eu só queria certos valores mas se eu conseguir por um próximo tratamento retira-los já poderia me adiantar demais.
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Extrair dados de uma página do IE   Sab Maio 04, 2013 10:16 pm

Boa tarde!!

Veja esse modelo que encontrei ao pesquisar, talvez possa ajudar.
Código:
Sub Vai_Tentando_Ai()
    Dim lnk As Object, ie As Object, doc As Object, i As Long
    Set ie = CreateObject("InternetExplorer.Application")
    With ie
        .Visible = True
        .Navigate "http://suggestadoctor.com/doctors_list_al_310_alabama_urology.htm"
        Do Until .readyState = 4: DoEvents: Loop
            Set doc = ie.document
           
            For Each lnk In doc.Links
                i = i + 1
                Range("A" & i) = lnk.innerText
                Range("B" & i) = lnk
            Next lnk
        End With
    End Sub
Voltar ao Topo Ir em baixo
Ver perfil do usuário
marvinmv



Mensagens : 6
Data de inscrição : 04/05/2013

MensagemAssunto: Re: Extrair dados de uma página do IE   Seg Maio 06, 2013 6:27 pm

AlexandreVBA,
Consegui, com sua ajuda, transferir os textos de um site para o excel, porém ele passou o texto todo para uma unica célula. Eu sei aonde está o erro mas não sei como chegar na solução ótima.
No meu exemplo:

Set htm = ie.document

Set oHTMLBod = htm.body 'aqui eu seleciono toda a pagina, porém eu gostaria de quebrar os textos em diferentes células

Range("A" & i) = oHTMLBod.innerText


acho que seria só uma referência, em vez de .body algo como um .body.(?) !
Como estou começando agora com este tipo de extração é tudo muito novo e tenho muitas dúvidas, então se puder me auxiliar novamente, ficaria muito grato.
qualquer novidade eu volto a postar.
obrigado.



Voltar ao Topo Ir em baixo
Ver perfil do usuário
marvinmv



Mensagens : 6
Data de inscrição : 04/05/2013

MensagemAssunto: Re: Extrair dados de uma página do IE   Seg Maio 06, 2013 10:55 pm

Alexandrevba,

sabendo que tenho uma tabela onde estão esses dados desejados, como faço a referência para suas linhas e colunas? Eu tentei com este comando, mas não deu certo aqui:

"variável do objeto ou a variável do bloco 'with' não foi definida"


Código:
With htm.getElementsByTagName("Table")(2)
    Sheets(1).Cells(1, 1).Value = .Cells(1).outerText
    Sheets(1).Cells(2, 1).Value = .Cells(2).outerText
End With

acho que por esse caminho eu vou fragmentar o texto para um melhor tratamento.


Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Extrair dados de uma página do IE   Ter Maio 07, 2013 3:26 am

Boa noite!!

Tem como você mandar seu arquivo, deposite seu arquivo em site gratuito como sendspace e nos mande o link.


Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
marvinmv



Mensagens : 6
Data de inscrição : 04/05/2013

MensagemAssunto: Re: Extrair dados de uma página do IE   Ter Maio 07, 2013 5:39 pm

Eu não posso mandar o site por segurança, mas esse é meu código.

Código:
Dim oHTMLDoc As Object
Dim oHTMLBod As Object
 Dim lnk As Object, IE As Object
Dim objIE As SHDocVw.InternetExplorer 'microsoft internet controls (shdocvw.dll)
Dim htmlInput As MSHTML.HTMLInputElement
   
    Consulta = "SITE.asp"
   
    Set objIE = New SHDocVw.InternetExplorer

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True

Dim Url As String
Url = "SITE.br/"
IE.Navigate Url
Do While IE.readyState <> 4
    DoEvents
Loop
 
Set htm = IE.document
 
Do
    Set frms = htm.forms(0)
    If Not frms Is Nothing Then Exit Do
Loop
 
For i = 1 To frms.Length
    Set frm = frms(i - 1)
    Cells(i, 1) = frm.Name
Next i
 
frms("Tx_Login").Value = "Login"
frms("Tx_Senha").Value = "Senha"
SendKeys "{ENTER}", True
Do Until .readyState = 4: DoEvents: Loop

With IE
        .Visible = True
        .Navigate "SITE.asp"
        Do Until .readyState = 4: DoEvents: Loop
End With

Set oHTMLDoc = IE.document
With htm.getElementsByTagName("Table")(2)
    Sheets(1).Cells(1, 1).Value = .Cells(1).outerText
    Sheets(1).Cells(2, 1).Value = .Cells(2).outerText
End With

'Este último with não executa.




Abaixo esta o código da tabela desejada da pagina. Eu acho que fiz uma referência errada a esta tabela.


Código:
<table border="0" width="760" style="margin: 0px;">
      <tbody><tr>
        <td colspan="3" align="center" style="padding:10px;">
          <span class="titulo">djaskdjsakldjsakl</span>
        </td>
      </tr>
         
     
         
      <tr>
        <td rowspan="2" bgcolor="yellow" align="center" style="font-family: verdana; font-size: 7pt; font-weight: bold;">xxxx
        %</td>
        <td class="dado">Valor orçamentário de diárias: R$ xxxxx</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td class="dado">Valor executado de diárias : R$ xxxxxx</td>
        <td class="dado" style="color:#0000FF;">Saldo: R$ xxxxxx</td>
      </tr>
      <tr>
        <td colspan="3">&nbsp;</td>
      </tr>

     
     
      <tr>
        <td rowspan="2" bgcolor="MediumSeaGreen" align="center" style="font-family: verdana; font-size: 7pt; font-weight: bold; padding: 3px;">xxxx
        %</td>
        <td class="dado">Valor orçamentário : R$ xxxxx</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td class="dado">Valor executado de diárias : R$ xxxxx</td>
        <td class="dado" style="color:#0000FF;">Saldo: R$ xxxx</td>
      </tr>
      <tr>
        <td colspan="3">&nbsp;</td>
      </tr>
     
     
     
      <tr>
        <td rowspan="2" bgcolor="MediumSeaGreen" align="center" style="font-family: verdana; font-size: 7pt; font-weight: bold;">xxxx
        %</td>
        <td class="dado">Valor orçamentário: R$ xxxxx</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td class="dado">Valor executado: R$ xxxxx</td>
        <td class="dado" style="color:#0000FF;">Saldo: R$ xxxxx</td>
      </tr>
      <tr>
        <td colspan="3">&nbsp;</td>
      </tr>
   
     
   
      <tr>
        <td rowspan="2" bgcolor="yellow" align="center" style="font-family: verdana; font-size: 7pt; font-weight: bold;">xxx%</td>
        <td class="dado">Valor orçamentário: R$ xxxxxx</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td class="dado">Valor executado: R$ xxxxx</td>
        <td class="dado" style="color:#0000FF;">Saldo: R$ xxxxx</td>
      </tr>
     
      <tr>
        <td colspan="3">&nbsp;</td>
      </tr>
     
    </tbody></table>

agradeço todo seu esforço em me ajudar Alexandrevba, muito obrigado mesmo.
Voltar ao Topo Ir em baixo
Ver perfil do usuário
marvinmv



Mensagens : 6
Data de inscrição : 04/05/2013

MensagemAssunto: Re: Extrair dados de uma página do IE   Ter Maio 07, 2013 9:07 pm

Alexandrevba,

consegui extrair elementos da <TABLE>
desta forma: (acabou sendo uma solução simples hehe)

Código:
 Set tabela = IE.document.getElementsByTagName("Table")
 Sheets(2).Cells(2, 1).Value = tabela(1).Rows(1).Cells(0).innerText 
 Sheets(2).Cells(2, 2).Value = tabela(1).Rows(1).Cells(1).innerText 

Agora o tratamento é mais tranquilo!!
A parte difícil acabou. rsrs
Mas acho que vou continuar fuçando esta biblioteca porque achei muito interessante manipular o IE.
tem muitas coisas que já tenho em mente. Very Happy
Muito obrigado alexandrevba pelo suporte. Você foi de grande ajuda.

Sucesso em seus projetos.
abraços!
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Extrair dados de uma página do IE   Qua Maio 08, 2013 2:09 am

Boa noite!!!

Se você conseguiu resolver eu fico feliz!!!

Até a próxima.

Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Conteúdo patrocinado




MensagemAssunto: Re: Extrair dados de uma página do IE   Hoje à(s) 2:49 am

Voltar ao Topo Ir em baixo
 
Extrair dados de uma página do IE
Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo 
Página 1 de 1
 Tópicos similares
-
» Listar, comparar e extrair dados de Tabela via VBA no Access 2007/2010
» Abrir o navegador em uma página da internet
» Como criar base de dados?
» Como inserir dados no MEIO de um arquivo txt
» Medir peso de uma página

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
Fórum Excel Bácico, Avançado e Vba :: Avançado/VBA :: Excel Avançado/VBA-
Ir para: