Excel - Descargar tabla de Internet (html) a excel

   
Vista:

Descargar tabla de Internet (html) a excel

Publicado por David (1 intervención) el 17/01/2015 02:28:47
Señores estoy tratando de descargar una tabla de una página de Internet, esta es http://www.siicex.gob.pe/promperustat/frmBuscar_Partida.aspx
en la cual uno ingresa la partida arancelaria( por ejemplo 6109909000), después te aparece una lista de la cual se elige la primera, y seguido te regresa una tabla que muestra las exportaciones de dicho producto por países, la macro que elabore función si lo ejecuto paso a paso (con F8), regresando los datos de la tabla web en la hoja activa.
Este proceso es lento, quisiera pedirles su ayuda para mejorar la macro de tal manera que pueda ejecutarla en una y no paso a paso, la macro es la siguiente:

Private Sub SIICEX()
Dim IE As Object, doc As Object, i As Integer
Application.ScreenUpdating = False
Set IE = CreateObject("internetexplorer.application")
IE.Visible = True
IE.navigate "http://www.siicex.gob.pe/promperustat/frmBuscar_Partida.aspx"
Do While IE.readystate <> 4: DoEvents: Loop
Set doc = CreateObject("htmlfile")
Set doc = IE.document
With doc
'Ahora coloco los datos como la partida arancelaria a buscar
.getelementsbyname("ctl00$ContentPlaceHolder1$txtDescripcionPartida")(0).Value = Str("6109909000")
.getelementsbyname("ctl00$ContentPlaceHolder1$btConsultar")(0).Click
'Espero un tiempo hasta que cargue la página
Application.Wait Now + TimeSerial(0, 0, 2)
.getElementBYid("ctl00_ContentPlaceHolder1_gvPartidas_ctl02_lnkPartidas").Click
End With
'Espero un tiempo hasta que cargue la página
Application.Wait Now + TimeSerial(0, 0, 2)
Do While IE.readystate <> 4
DoEvents
Loop
'Coloco la fecha
With doc
.getElementBYid("ctl00_ContentPlaceHolder1_ddlAnioI").Value = 2014
.getElementBYid("ctl00_ContentPlaceHolder1_ddlMesI").Value = "03"
.getelementsbyname("ctl00$ContentPlaceHolder1$btConsultar")(0).Click
End With
Application.Wait Now + TimeSerial(0, 0, 3)
'Las siguientes 7 lineas de codigos me permiten descarlar datos de la pagina que se ha cargado previamente
Set objShell = CreateObject("Shell.Application")
Set objWindow = objShell.Windows()
For Each OBJITEM In objWindow
If LCase(OBJITEM.FullName Like "*iexplore*") Then
Set IE = OBJITEM
End If
Next OBJITEM
' carga el nuevo documento
Set doc = IE.document
' carga la tabla de resultados
Set tbl = IE.document.getElementBYid("ctl00_ContentPlaceHolder1_gvPaises")
' copia los datos de la tabla en la hoja
For Row = 1 To tbl.Rows.Length - 1
For col = 0 To tbl.Rows(Row).Cells.Length - 1
Cells(Row + ActiveCell.Row, ActiveCell.Column + col) = tbl.Rows(Row).Cells(col).innerText
Next col
Next Row
Set tbl = Nothing
Set doc = Nothing
'Set IE = Nothing
IE.Quit
Application.ScreenUpdating = True
End
End Sub

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder