Visual Basic - Macro para extraer datos desde la web a mi Excel

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Macro para extraer datos desde la web a mi Excel

Publicado por Marcelo (1 intervención) el 27/01/2014 16:58:04
Hola a todos.
La verdad soy nuevo en esto y me gustaría saber si me pueden ayudar con esto que me tiene de cabeza, ya que no entiendo nada de HTML.
encontré esta Macro en otro foro, y me gustaría hacer lo mismo con otra página, pero no logro encontrar la manera de copiarla como corresponde y llevarla a mis necesidades.
Esta es la que encontré, que va a una página de Aerolíneas:

Sub test()

' crea una instancia de Internet Explorer, navega a vueling, rellena una formulario
' ejecuta el código javascript y descarga la tabla de resultados
'

Const BASE_NAME As String = "AvailabilitySearchInputSearchView_"

Dim ie As Object ' InternetExplorer
Dim doc As Object ' HTMLDocument
Dim tbl As Object ' HTMLTable
Dim row As Long ' recorre las filas de la tabla de resultados
Dim col As Long ' recorre las columnas de la tabla de resultados

' se crea la instancia de la aplicación
Set ie = CreateObject("internetexplorer.application")

With ie

' para poder trabjar más facilmente mientras se desarrolla la macro,
' se puede hacer visible la aplicación:
'ie.Visible = True

' se le indica a ie la dirección a la que debe ir
.Navigate2 "http://tickets.vueling.com/"

' espera a que el estado del navegador (ie) sea 'listo' : 4 = READYSTATE_COMPLETE
Do While .ReadyState <> 4 'READYSTATE_COMPLETE
DoEvents
Loop

' carga el documento para trabajar más fácilmente con él
Set doc = .Document

' asigna los valores deseados a cada uno de los campos del formulario
With doc
.getElementById(BASE_NAME & "RoundTrip").Checked = False
.getElementById(BASE_NAME & "OneWay").Checked = True
.getElementById(BASE_NAME & "TextBoxMarketOrigin1").Value = "Amsterdam (AMS)"
.getElementById(BASE_NAME & "TextBoxMarketDestination1").Value = "Barcelona (BCN)"
.getElementById("marketDate1").Value = "domingo 7 de junio"
.getElementById("marketDate2").Value = "domingo 7 de junio"
.getElementById(BASE_NAME & "DropDownListPassengerType_ADT").Value = 2
.getElementById(BASE_NAME & "DropDownListPassengerType_CHD").Value = 0
.getElementById(BASE_NAME & "DropDownListPassengerType_INFANT").Value = 0
' ejecuta el código javascript
.parentWindow.execScript "__doPostBack('AvailabilitySearchInputSearchView$LinkButtonNewSearch','');"
End With

' espera mientras el navegador está ocupado
Do While .Busy
DoEvents
Loop

' carga el nuevo documento
Set doc = .Document
' carga la tabla de resultados
Set tbl = .Document.getElementById("availabilityTable0")

' copia los datos de la tabla en la hoja
For row = 2 To tbl.Rows.Length - 1
For col = 0 To tbl.Rows(row).Cells.Length - 1
Cells(row + 1, col + 1) = tbl.Rows(row).Cells(col).innerText
Next col
Next row

End With

' dejamos las cosas como las encontramos. Buenos modales.
Set tbl = Nothing
Set doc = Nothing
Set ie = Nothing

End Sub

Y yo necesito exactamente esto, pero en otra página!!

http://www.svs.cl/sitio/mercados/entidad.php?auth=&send=&mercado=V&rut=7136&grupo=&tipoentidad=RGFIN&row=AAAT8FAA3AAAAIMAAM&vig=VI&control=svs&pestania=7


La idea es poder determinar desde la macro el rango de fechas y luego poder importar esos datos a mi excel.
Muchas gracias de antemano!!
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