Excel - Importar datos y Excel + Macro

   
Vista:

Importar datos y Excel + Macro

Publicado por Blub (1 intervención) el 18/12/2014 16:40:42
Hola, espero que me puedan ayudar con un problema que tengo

Sucede es que estoy haciendo un modelo de liquidación de sueldo lo más automático posible, dentro de los requerimientos que quiero lograr es que calcule el impuesto al sueldo de manera automática, pero sucede que la tabla de cálculo cambia mes a mes en la pagina web que se publica

Por ejemplo esta es la página de diciembre
http://www.sii.cl/pagina/valores/segundacategoria/imp_2da_diciembre2014.htm

y esta es la de enero

http://www.sii.cl/pagina/valores/segundacategoria/imp_2da_enero2015.htm

si se fijan el cambio en la URL fue el mes, una dice diciembre y la otra dice enero. También cambio el año, pero es lo de menos.

Entonces se genera una nueva tabla y una nueva dirección web para poder revisarla.
Lo que estaba pensando hacer es que utilizando el importador de datos web del Excel traer esta tabla al Excel y con una formula calcule el impuesto.

Pensé que con una macro podía hacer que según la fecha del mes cambiar la URL y me fuera a buscar la última tabla.
Pero no me resulta, es importante mencionar que mi conocimiento de macros es ultra básico.

Entonces mi pregunta. De qué manera puedo hacer para que con una macro cambie la URL e importe los datos automáticamente??

Muchas gracias!!!!!!!!!!!!!!!!!!!!!!!!!!!
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
Imágen de perfil de LaO

Importar datos y Excel + Macro

Publicado por LaO (67 intervenciones) el 18/12/2014 18:52:53
Hola Blub,

Un procedimiento así involucra diversas variantes en particular el uso de los datos, los cuales el usuario deberá en algunos casos ajustar como es el caso de números.

Para tu requerimiento asigna la siguiente rutina en un módulo, ó donde prefieras y ejecútala teniendo presente que esta te pedirá la dirección URL completa (http://....). Tambien debes tener en cuenta que los datos obtenidos se importarán en la hoja1 (sheets(1)) donde siempre cualquier información previa será borrada.

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Sub WebDataImport()
On Error GoTo ControlErr
 
Dim strURL As String
Dim strDestino As String, strReportName As String
Dim numConnections As Integer, i As Integer
 
'vars
numConnections = ThisWorkbook.Connections.Count
strDestino = "A1"
strReportName = "Reporte Mensual"
strURL = InputBox("Indique URL origen", "Mensaje")
 
'check url data
If strURL <> Empty Then
 
'custom url address
strURL = "URL;" & strURL
 
'clean previous connections
If numConnections > 0 Then
For i = 1 To numConnections
    ThisWorkbook.Connections(i).Delete
Next i
End If
 
'clean datasheet
Sheets(1).Select
Sheets(1).Cells.Clear
 
'control excel app
Application.ScreenUpdating = False
 
'get web query
With Sheets(1).QueryTables.Add(Connection:=strURL _
    , Destination:=Range(strDestino))
    .Name = strReportName
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlOverwriteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .WebSelectionType = xlEntirePage
    .WebFormatting = xlWebFormattingNone
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .WebSingleBlockTextImport = False
    .WebDisableDateRecognition = False
    .WebDisableRedirections = False
    .Refresh BackgroundQuery:=False
End With
 
'control excel app
Application.ScreenUpdating = True
 
'final message
MsgBox "La importación ha finalizado", vbInformation, "Mensaje"
 
End If
 
Exit Sub
 
ControlErr:
 
MsgBox "Error: " & Err.Description, vbCritical, "Mensaje"
 
End Sub


Un saludo,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Importar datos y Excel + Macro

Publicado por Blub (1 intervención) el 18/12/2014 19:14:54
los acabo de probar, esta super bueno!!. agregar la URL es lo de menos.
de verdad te agradezco un montón tu ayuda!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de LaO

Importar datos y Excel + Macro

Publicado por LaO (67 intervenciones) el 18/12/2014 19:18:06
Hola Blub,

Con gusto.

Un saludo,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Importar datos y Excel + Macro

Publicado por Audad (58 intervenciones) el 20/12/2014 03:15:19
LaO... un saludo...
Vi tu macro... Interesante !!...
Como puedo hacer para leer la traducción en el "traductor de Google"
ejem...

strURL = "https://translate.google.com.pe/?hl=es&tab=wT#en/es/word"

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de LaO

Importar datos y Excel + Macro

Publicado por LaO (67 intervenciones) el 21/12/2014 03:47:17
Hola Audad,

Lo que solicitas no es posible hacerlo con el ejemplo anterior. Allí solo se ejecuta una consulta que carga datos previamente estructurados en html simple.

Para el caso de Google se hace necesario trabajar con la API de Google Translator que en si misma recibe parámetros y que normalmente son enviados y recibídos usando XMLHTTP. Hay algunos casos en los que utiliza Internet Explorer como vía dinámica, pero en mi opinión el resultado es en ocasiones inestable y demorado.

En la siguiente función que he adaptado de investigaciones anteriores, se utiliza el objeto MSXML2.XMLHTTP para enviar una solicitud de traducción a Google. Como quiera que este tema es bastante denso, debes tener en cuenta que esta figura es para pequeñas traducciones como frases ó palabras.

Para utilizar la función escribes en la celda donde desees ver el resultado =GoogleTranslation(TextoOrigen,IdiomaTraducir)

Asumiendo que tengo en A1 "Hello World" la fórmula quedaria así: =GoogleTranslation(A1;"es"), donde se traduce de Inglés a Español. Como Google aplica autodetección del idioma origen, solo se pasa el parámetro del idioma al que queremos llegar.

Si quisiéramos pasar a Francés la formula sería = GoogleTranslation(A1;"fr")

El código de la función es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Public Function GoogleTranslation(ByVal strSourceText As String, ByVal strTargetLang As String) As String
Dim strTranslation, strURL As String
Dim objXMLHTTP As Object
 
'vars
strSourceText = Replace$(strSourceText, Chr$(32), "%20")
strSourceText = Replace$(strSourceText, Chr$(160), "%20")
 
'customizing google url parameters
strURL = "http://translate.google.com/translate_a/t?client=t&text={S}&hl=" & strTargetLang & "&sl={F}&tl={T}&multires=1&pc=0&rom=1&sc=1"
strURL = Replace$(strURL, "{S}", strSourceText)
 
'execute XMLHTTP
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
Call objXMLHTTP.Open("get", strURL, False)
Call objXMLHTTP.Send
strTranslation = objXMLHTTP.ResponseText
 
'translation result
strTranslation = Replace$(Mid$(CStr(Split(strTranslation, ",")(0)), 4), Chr$(34), "")
GoogleTranslation = strTranslation
End Function


Un saludo,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Importar datos y Excel + Macro

Publicado por Audad (58 intervenciones) el 23/12/2014 00:46:14
Gracias Lao...
Funciona para una palabra determinada o frase... Es posible tener como texto...toda la pantalla que te devuelve Google... donde pueden verse... las calificaciones gramaticales, los ejemplos...etc. ?
Gracias...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Importar datos y Excel + Macro

Publicado por migobo (1 intervención) el 12/08/2016 20:31:38
Hola Lao, buenas tardes, tengoun pregunta, ¿hay alguna forma de hacer una macro genérica para importar datos desde una página web, y modificarla según las necesidades?

Gracias y buen día
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Importar datos y Excel + Macro

Publicado por Audad (58 intervenciones) el 13/08/2016 05:07:34
migobo... un saludo...
probaste un simple ... copy/paste... en excel y hacer una macro para procesarla... yo lo hice asi....
me actualizaste mi inquietud... hace dos años !!!
bye.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Importar datos y Excel + Macro

Publicado por Claudia Ruiz cloy.ruiz@gmail.com (1 intervención) el 04/07/2016 06:00:05
Hola tengo una pagina web q no me extraee datos, solo las opciones y por mas que las seleccione todas no funciona.

https://www.asfi.gob.bo/paginaspublicas2/VistaPAF/UbicacionPAF.aspx?Mercado=EIF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Importar datos y Excel + Macro

Publicado por Mikel Insectopy@hotmail.com (1 intervención) el 16/08/2016 01:42:18
Hola a todos!

Primeramente agradeceros toda la ayuda que dáis en esta web, me ha servido de mucho para hacer mis pinitos con los macros y con otras fórmulas de Excel.

Al hilo de los macros para la obtención de datos desde la web, he estado utilizando el macro descrito por LaO con alguna modificación, pero ahora tengo que obtener datos de 788 direcciones, y andar metiendo una a una sería eterno.

Tengo las 788 direcciones en una hoja excel, y quisiera saber si hay algún código que modifique el strURL = InputBox("Indique URL origen", "Mensaje") para que sea una casilla de mi lista. Había probado con strURL = Sheets("hoja1").Select Range("A1").Select pero no me funciona.

De donde tengo que sacar los datos es de: http://www.msssi.gob.es/ciudadanos/productos.do?tipo=plaguicidas

Aunque no tengo que sacar todos, sino únicamente las 788 direcciones que tengo que son del tipo:
http://www.msssi.gob.es/ciudadanos/productos.do?metodo=realizarDetalle&tipo=plaguicidas&numero=13-30-06755

Una vez que tenga los datos descargados ya me he hecho un macro para sacar los datos que necesito y colocarlos en una tabla de la manera que me interesan.

Muchas gracias de antemano!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar