[VBA] RETORNAR VALOR DE UMA TABELA NA WEB?!

MATTF 15/01/2014 21:59:37
#433117
Galera,já programo em VB faz um tempinho mas especificadamente em VBA eu nunca tinha programado.Comecei a fazer diversas tabelas em Excel e notei que eu poderia ganhar tempo automatizando umas tarefas,o fiz,deu certo e já ganhei um tempo,mas tem um problema que me fez esquentar a cabeça,procurei na net e nao encontrei nada que fosse específico ao meu problema,vamos lá:

Preciso retornar uma tabela html para o excel,até ai eu consigo numa boa,o problema é que desta tabela,eu preciso de um determinado campo,não a tabela toda.Alguém já conseguiu algo do tipo?!

Agradeço desde já.
FILMAN 15/01/2014 22:17:33
#433119
cara seja mais especifico!

você esta querendo ler uma tabela <table> html e armazenar no excel ''e isso?
MATTF 15/01/2014 22:31:00
#433121
Sim copiar a tabela padrão para o excel eu consigo,porém a tabela toda apenas

Considere essa tabela

ID da tabela = [Ô]TabelaID[Ô]

ID Nome Idade
1 Joao 15
2 Pedro 13
3 Paulo 20
4 Ferreira 19

3 colunas,5 linhas.
Pelo método padrão eu retornaria a tabela toda para o excel,sem problemas.
Porém eu gostaria de retornar apenas os Nomes,ao invés de a tabela toda.

Ficou mais claro ?
FILMAN 15/01/2014 23:15:59
#433122
sim ficou claro!

Mas nos mostre o html real que você esta lendo e como esta fazendo para ler o mesmo!


assim fica mais fácil de te ajudar e não fugir tanto do seu código!
MATTF 16/01/2014 13:27:36
#433159
Estou sem o codigo aqui comigo mas era nessa sintaxe(Copiei de um exemplo na internet) :

Citação:


Sub test()
Dim oDom As Object: Set oDom = CreateObject([Ô]htmlFile[Ô])
Dim x As Long, y As Long
Dim oRow As Object, oCell As Object
Dim data

y = 1: x = 1

With CreateObject([Ô]msxml2.xmlhttp[Ô])
.Open [Ô]GET[Ô], [Ô]locahost/index.html[Ô], False
.Send
oDom.body.innerHtml = .responseText
End With

With oDom.getelementsbytagname([Ô]table[Ô])(0)
ReDim data(1 To .Rows.Length, 1 To .Rows(1).Cells.Length)
For Each oRow In .Rows
For Each oCell In oRow.Cells
data(x, y) = oCell.innerText
y = y + 1
Next oCell
y = 1
x = x + 1
Next oRow
End With

Sheets(1).Cells(1, 1).Resize(UBound(data), UBound(data, 2)).Value = data
End Sub



e o Html

Citação:


<html>
<head>
</head>
<body>
<table id=[Ô]IDTABELA[Ô]>
<tr>
<td>ID</td><td>Nome</td><td>Idade</td>
</tr>
<tr>
<td>1</td><td>João</td><td>15</td>
</tr>
<tr>
<td>2</td><td>Pedro</td><td>13</td>
</tr>
<tr>
<td>3</td><td>Paulo</td><td>20</td>
</tr>
<tr>
<td>4</td><td>Ferreira</td><td>19</td>
</tr>
</table>
</body>
</html>


FILMAN 22/01/2014 19:41:17
#433418
Cara desculpa a demora, mas estava cheio de problemas para resolver!

Segue anexo um exemplo muito simples, mas claramente você terá que quebrar a cabeça para se adaptar ao HTML visto que se for uma página que muda constantemente você sempre vai ter que estar atendo ao código.

qualquer duvida poste ai.
Faça seu login para responder