Cómo copiar en filas consecutivas unos valores que cambian cada 5 minutos


Buenas, yo me dedico a otra cosa y por eso pido ayuda a los expertos en EXCEL:

Tengo EXCEL 2003
- necesito que en una hoja de excel, todos los valores que tengo en la fila 5 por ejemplo, se vayan copiando cada 5 minutos a las filas posteriores, por ejemplo a la 6. Al cabo de los 5 minutos, los valores de la fila 5 ya han cambiado y quiero que se copien a la fila 7. Al cabo de 5 minutos quiero que se copien a la fila 8... Ya así sucesivamente hasta que cierre el excel.
Me interesa que a la vez que se van copiando los valores pueda tener acceso a la hoja para poder por ejemplo copiar.
Los valores de la fila 5 vienen, con unos condicionantes de consulta, de otra hoja que a su vez los trae de una web de valores de bolsa que refresco cada 5 minutos o bien dejo puesta una macro y se hace solo cada cinco minutos
Lo que pretendo, por tanto, es que en la primera hoja me salga un "histórico" de los valores que ha tomado una empresa mientras la sesión de Bolsa del dia está abierta y así actuar.
Muchas gracias por vuestra ayuda

1 respuesta

Respuesta
1

Te envío una macro, pero antes tengo las siguientes dudas:

1. Cómo se llama el libro y la hoja

2. Quieres que se copie cada 5 min, o bien, cada vez que cambies los valores en la fila 5. Si tu haces el refresco cada 5 minutos, entonces en automático una macro copiará toda la fila a la última.

El libro se llama SEND

La hoja en la que se reciben los datos de una web se llama DATOS

La hoja en la que quieron que se vayan añadiendo consecutivamente desde la fila 6 hacia abajo se llama HISTORICO

Yo lo que tengo es una macro que:

- primero se tra datos de una web a la hoja DATOS

- luego en la celda A2 de HISTÓRICO pongo el nombre de una empresa cotizada (por ejemplo TELEFONICA)

- varias celdas de la fila 5 de HISTÓRICO, con el condicionante del valor escrito en A2, buscan su coincidencia en la hoja DATOS y se traen todos los valores que me interesan y se anotan en la fila 5 DE historico

- a los 5 minutos, se repite el proceso porque así lo tengo en la macro, es decir, vuelta a ir a la web, consultar los datos y LOS SOBREESCRIBE en la FILA 5 DE HISTÓRICO....

Y eso es lo que pretendo que me digas como hacer: que los datos distintos que van apareciendo en al fila5 de HISTÓRICO los pueda ir almacenando en filas desde la 6 hacia abajo.

Gracias por tu interés

Mándame tu macro y te digo dónde hacerle los cambios.

Saludos. Dam

Te la paso, le he quitado lo de que se automatice cada 5 minutos porque no sé que he tocado y me da problemas. Ya lo meteré cuando vea que en manual el conjunto me funciona:

Sub SEND_XX()
'
' SEND_XX Macro
' Macro grabada el 31/10/2012 por EMILIO
'
'
Sheets("datos").Select
Range("A13").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
Sheets("HISTÓRICO").Select
Range("H6").Select
ActiveCell.FormulaR1C1 = "=datos!R[-5]C[-7]"
Range("H6").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("datos").Select
Columns("A:A").Select
Application.CutCopyMode = False
Range("A4").Select
Application.CutCopyMode = False
Range("A1:H114").Sort Key1:=Range("B3"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Sheets("HISTÓRICO").Select
Range("I5").Select
End Sub

Así es como esta la hoja HISTÓRICO:

USU90716AA64
#¡REF!
ISIN
Importe Compra
Precio Compra(*)
Precio Venta(*)
Importe Venta
Ult.Precio Negociado
Importe Nominal(**)
HORA
USU90716AA64 busca este valor en la hoja DATOS y si está me lo trae
30.000 € trae este valor de DATOS
64,00% trae este valor de DATOS
73,13% trae este valor de DATOS
20.000 € trae este valor de DATOS
69,00% trae este valor de DATOS
215.000 € trae este valor de DATOS
31/10/2012 17:15 trae este valor de DATOS

Gracias por el interés

Te regreso la macro con los cambios, reemplaza tu macro, por esta.

Sub SEND_XX()
'
' SEND_XX Macro
' Macro grabada el 31/10/2012 por EMILIO
'
'
Sheets("datos").Select
Range("A13").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
Sheets("HISTÓRICO").Select
ufila = Range("H" & Rows.Count).End(xlUp).Row + 1
If ufila < 6 Then
    ufila = 6
End If
Range("H" & ufila).Select
ActiveCell = Worksheets("datos").Range("A1")
Range("H" & ufila).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("datos").Select
Columns("A:A").Select
Application.CutCopyMode = False
Range("A4").Select
Application.CutCopyMode = False
Range("A1:H114").Sort Key1:=Range("B3"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Sheets("HISTÓRICO").Select
Range("I5").Select
End Sub

Saludos.Dam

Si es lo que necesitas.

Gracias

la he sustituido por la mia y no sé si por los espacios que hay en blanco o no pero se me queda atrancada en

BackgroundQuery:=False

No importan los espacios.

La instrucción dice:

Sheets("datos").Select
Range("A13").Select

Selection.QueryTable.Refresh BackgroundQuery:=False

En la Celda A13 de tu hoja datos, debe estar una instrucción, desconozco cuál sea, pero ahí debes tener una instrucción para traer los datos de la web

Revisa que se encuentre la instrucción, si creaste un nuevo libro, debes copiar de tu libro original lo que tengas en A13 y pégalo en el nuevo libro.

Saludos. Dam

Gracias por todo el esfuerzo y tiempo que le estás dedicando.

Sigue sin funcionar...

Hasta el lunes no regreso a Madrid, y ya no sé que hacer. Si te parece o me mandas un mail y te envío el libro de excel 2003 o la subo a internet y te paso el link y asi te haces mejor una idea de lo que tengo y de lo que me gustaría que hiciera la hoja

De nuevo gracias

emilio

mi correo [email protected]

Envíame tu archivo original, el que si funcionaba antes de hacerle cambios a la macro, para ver que es lo que tenías en la celda A13

Saludos. Dam

enviado, gracias!

Ya te regresé el archivo, ya funciona.

Por favor, si es lo que necesitas, podrías cerrar la pregunta.

Muchas gracias!!!!!
probada y funcionando ok, al final le he añadido un nuevo proceso
Sub XX_REPETIR()
MsgBox "Esta macro se ejecuta cada minuto y medio"
Application.OnTime Now + TimeValue("00:01:30"), "SEND"
End Sub
para que se repita la macro SEND cada minuto y medio, pero me ha estado funcionando durante un tiempo y ya no, no sé muy bien dónde lo debo añadir, si como un proceso mas de la macro SEND, al principio o al final, me funcionó pero ya no, y no recuerdo cómo estaba para que funcionara...
PD: ahora se ejecuta una vez y ya no más...
(el fallo no es de tu macro, es al implementar yo la mia, que no sé muy bien dónde meterla)
Muchas gracias y recuerda que si necesitas algo sobre temas de Derecho del Trabajo en España puedes contar con mi humilde asesoramiento

Lo tomaré en cuenta si me voy para España, je je.

Un favor, podrías cerrar esta pregunta y abrir una nueva para revisar la macro SEND.

Sigo a tus órdenes.

Saludos. Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas