Lista con datos en función del tiempo

A ver si me podéis ayudar. Estoy trabajando en hojas de excel con vínculos a cotizaciones de bolsa. Las cotizaciones van variando a lo largo del día y me gustaría que se creara un registro (a modo de tabla) que refleje los cambios en función de la hora y así poder crear un gráfico intradía.
Supongo que se tendrá que usar una macro que grabe los datos cada por tiempo.
Ayuda!

1 respuesta

Respuesta
1
Esta rutina puede ayudar.
En una hoja en blanco en el Rango A2:A25 escribe 00:00, 01:00, 02:00, 03:00,,,, 23:00
* Abre el Editor de Visual Basic Alt-F11
* En la ventana Proyecto, habitualmente en la parte centro-superior-izquierda de tu pantalla, ubica ThisWorkBook debajo de Microsoft Excel Objects y haz doble click.
*En el módulo en blanco que aparece, copia el siguiente codigo
Dim sStart As Single
Private Sub Workbook_Open()
    On Error Resume Next
    sStart = True
    Actualizar
    TemporizadorOn
End Sub
Ahora del menú de Herramientas, haz click en Insertar - Módulo. En el módulo en blanco que aparece, copia el siguiente código :
Dim bState As Boolean
Sub TemporizadorOn()
    On Error Resume Next
    Sheets("Hoja1").Range("A1") = "Tempor On"
    Sheets("Hoja1").Range("A1").Interior.ColorIndex = xlNone
    Dim sStart As Single
    bState = True
    Do While bState
        sStart = Timer
        Do While (bState And Timer < sStart + 1800)
            DoEvents
        Loop
        Actualizar
    Loop
End Sub
Sub Actualizar()
    Application.ScreenUpdating = False
    HojaOriginal = ActiveSheet.Name
    Sheets("Hoja1").Select
    CeldaOriginal = ActiveCell.Address
    HoraActual = Format(Now(), "hh")
    Range("A1").Select
    Do While Format(ActiveCell, "hh") <> HoraActual
        ActiveCell.Offset(1, 0).Select
    Loop
    Fila = ActiveCell.Row
    DiaActual = Format(Now(), "dd-mm-yy")
    Range("B1").Select
    Do While Format(ActiveCell, "dd-mm-yy") <> DiaActual And ActiveCell <> ""
        ActiveCell.Offset(0, 1).Select
    Loop
    If ActiveCell <> Format(Now(), "dd-mm-yy") Then ActiveCell = Format(Now(), "dd-mm-yy")
    Col = ActiveCell.Column
    Cells(Fila, Col) = Range("Dato")
    Range(CeldaOriginal).Select
    Sheets(HojaOriginal).Select
    ActiveWorkbook.Save
    Application.ScreenUpdating = True
End Sub
Sub TemporizadorOff()
    bState = False
    Sheets("Hoja1").Range("A1") = "Tempor OFF"
    Sheets("Hoja1").Range("A1").Interior.ColorIndex = 36
End Sub
En la linea : Cells(Fila, Col) = Range("Dato") coloca el rango del dato que quieres registrar.
Cierra el Editor de Visual Basic. Graba el Libro, ciérralo y vuelve a abrirlo.
Cuando la rutina esta ejecutándose notarás que no puedes maniobrar libremente por Excel, así que tienes que detener el temporizador, trabajar en tu hoja y luego encender nuevamente el temporizador.
Para detener el Temporizador :
     Pulsa Alt-F8 - Selecciona TemporizadorOff - Aceptar
Para iniciar el Temporizador :
     Pulsa Alt-F8 - Selecciona TemporizadorOn - Aceptar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas