Extraer datos de una tabla desde la web a traves de informacion solicitada
Publicado por Danny (3 intervenciones) el 06/07/2017 16:36:17
Amigos quiero poder extraeer informacion de la pagina web que aparece en el codigo, con datos que yo mismo coloco, ya que dicha pagina para poder mostrarme la tabla de donde quiero extraer los datos debo darle primero cierta informacion, como fecha inicial y fecha final, y tipo de serie, he intentado por muchos metodos realizar el trabajo pero me ha resultado muy dificil lograr mi cometido. Saludos y mil Gracias.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Function svs(ddi, mmi, aai, ddf, mmf, aaf, se)
Dim winreq As Object
Dim htmldoc As Object
Dim table As Object
Dim tr As Long
Dim td As Long
Dim data As Variant
Set winreq = CreateObject("WinHttp.winHttpRequest.5.1")
Set htmldoc = CreateObject("htmlfile")
With winreq
.Open "POST", "http://www.svs.cl/institucional/mercados/entidad.php?mercado=V&rut=8035&grupo=&tipoentidad=RGFMU&row=AABbsrAAjAAAACcAAW&vig=VI&control=svs&pestania=7"
.SetRequestHeader "content-type", "application/x-www-form-urlencoded"
.Send "ddi=" & Format(ddi, "00") & _
"&mmi=" & Format(mmi, "00") & _
"&aai=" & aai & _
"&ddf=" & Format(ddf, "00") & _
"&mmf=" & Format(mmf, "00") & _
"&aaf=" & aaf & _
"&se=" & se & _
"&image2.x=44&image2.y=10&enviado=1"
htmldoc.body.innerHTML = .ResponseText
End With
Set table = htmldoc.getElementById("contenido").getElementsByTagName("table")(0)
ReDim data(table.Rows.Length - 1, table.Rows(0).Cells.Length - 1)
For tr = 0 To table.Rows.Length - 1
For td = 0 To table.Rows(tr).Cells.Length - 1
data(tr, td) = table.Rows(tr).Cells(td).innerText
Next td
Next tr
Set htmldoc = Nothing
Set winreq = Nothing
svs = data
End Function
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub test()
Dim data As Variant
data = svs(ddi:=10, _
mmi:=6, _
aai:=2016, _
ddf:=10, _
mmf:=1, _
aaf:=2017, _
se:="TOTAL FONDO")
Range("a1").Resize(UBound(data, 1) + 1, UBound(data, 2) + 1) = data
End Sub
Valora esta pregunta
0