Caros, muito bom dia a todos!
Estava tentando desenvolver uma rotina para tentar buscar uma informação de uma página da internet, sendo que o termo buscado seria o innertext de uma "TD". Encontrei na internet uma rotina que eu acredito que faça isso, porém durante a execução da rotina o "FOR" se encerra sem ao menos começar e isso me deixou confuso. A rotina que estou utilizando é:
Sub Extract_TD_text()
Dim URL As String
Dim IE As InternetExplorer
Dim HTMLdoc
Dim TDelements
Dim TDelement
Dim r As Long
'Saved from www vbaexpress com/forum/forumdisplay.php?f=17
URL = " http://www.bmfbovespa.com.br/Cias-Listadas/Empresas-Listadas/ResumoEmpresaPrincipal.aspx?codigoCvm=17639&idioma=pt-br"
Set IE = New InternetExplorer
With IE
.Navigate URL
.Visible = True
'Wait for page to load
While .Busy Or .ReadyState <> READYSTATE_COMPLETE: DoEvents: Wend
Set HTMLdoc = .Document
End With
Set TDelements = HTMLdoc.getElementsByTagName("TD")
r = 0
For Each TDelement In TDelements
'Look for required TD elements - this check is specific to VBA Express forum - modify as required
If TDelement.innerText Like "*(Quantidade de Ações)*" Then
Sheets(1).Range("A1").Offset(r, 0).Value = TDelement.innerText
r = r + 1
End If
Next
End Sub
Alguém saberia o motivo?
Agradeço antecipadamente qualquer ajuda.
Atenciosamente,
Silmar
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Veja se o Tópico abaixo ajuda, pelo menos foi dado como Resolvido, e é referente ao mesmo Site e Tabela :
VBA/IE - Capturar Dado de Uma TD [Resolvido]
viewtopic.php?f=10&t=6759
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Tambem não irá executar o for se TDelements estiver nulo/vazio
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Então, pegar dados de uma TD com base no número da tabela é muito "inseguro", pois se o site muda o layout, alterando o número da tabela, você acaba pegando dados desatualizados. Eu não acredito que não tenha uma forma de pegar uma "Td" pelo innertext. Essa é minha busca, pegar uma TD com base no innertext, se é que isso é possível.
Eu não consegui entender como é que a TD está vazia, pois na página há várias "TD´s", assim não entendo o motivo da FOR não rodar. Este comando "busca" todas as Td´s da página : "Set TDelements = HTMLdoc.getElementsByTagName("TD")", então, como pode ele estar nulo/vazio?
Vou tentar mais um pouco.
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Bom, não conheço muito de paginas na internet, mas sei que o retorno para a variavel e como [objetc], (pra min, means "Nulo") então by pass o comando For.
No Ozgrid, um sujeito com duvida semelhante http://www.ozgrid.com/forum/showthread.php?t=74589 , em alguns funciona outros sites não; então como sugestão de outro site ( http://forums.codeguru.com/showthread.p ... some-times) ele alterou o elemento de procura no lugar do tagname x tgid
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
É uma boa idéia...Vou pesquisar sobre o tgid. Infelizmente, quando o assunto é VBA/IE há pouca literatura em português, boa parte das soluções estão em inglês, então quem não domina a língua acaba sofrendo. Vou navegar por alguns blog´s da vida e sugerir que eles abordem um pouco este assunto.
Obrigado, Reinaldo, por sua atenção.
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel