¿Cómo puedo hacer una ejecución cíclica infinita en una Macro de Excel?

Tengo una tabla con valores en tiempo real, estos valores son temperaturas de un horno. Cada hora copia solo el valor de la tabla, y no la formula; dependiendo de la HORA en que se toma el valor, la pega en la columna respectiva a esa hora. Estas rutinas las hace al abrir el libro de excel. Pero solo durante las siguientes 24 Horas que se ha abierto el libro. Es decir... Si el libro lo abrí a las 14hrs, mi rutina deja de funcionar a las 13Hrs del siguiente día.

Esté es el código que tengo en VBAProject en la parte de ThisWorkbook...

Private Sub Workbook_Open ( )

Aplication.Ontime TimeValue ("00:00:00"), "DataTime_00_00"

Aplication.Ontime TimeValue ("01:00:00"), "DataTime_01_00"

Aplication.Ontime TimeValue ("02:00:00"), "DataTime_02_00"

...

...

...

Aplication.Ontime TimeValue ("23:00:00"), "DataTime_23_00"

End Sub

¿Qué debo hacer para que esta rutina se haga de manera que, siga y siga y siga sin detenerse?

1 respuesta

Respuesta

Que fórmula tienes y en que celda la manejas podrías enviarme el archivo...

La fórmula de donde se toma el valor esta ligada a un software de Rockwell automation... ¿Y a dónde te mando el archivo?

[email protected], necesito saber si solo se copia o si vas insertando filas para ir colocando cada dato o en una hoja nueva ect...

Amigo para ejecutar la macro el pc debe estar encendido y por supuesto que debe ser automático con tiempo indefinido y ya te la tengo... estoy esperando que me contestes algo a ver si te funciona

Pues si, tengo el PC encendido, y después de las 24 horas que pasa después de haber abierto el libro, se detienen las macros. Enseguida te mando el archivo.

Lo que vas a colocar en 1 modulo:

Sub programarMacro()
Tiempo = Now + TimeValue("01:00:00")
Application.OnTime Tiempo, "miMacro", , True
End Sub

* Esto te va a ejecutar la macro cada 1 hora; pero falta la macro que se va a ejecutar, en este caso yo la llame miMacro:

Sub miMacro()
Sheets("Hoja1").Select
Range("D5").Value = Range("D5").Value
Sheets("Hoja2").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("B2").Select
Sheets("Hoja1").Select
Range("D5").Select
Selection.Copy
Sheets("Hoja2").Select
Range("B2").PasteSpecial xlPasteValues
Call programarMacro
End Sub

Al colocarle Call programarMacro se reactivara nuevamente la macro que ejecutara miMacro y así sucesivamente(osea infinitamente si no cierras el programa, hay una manera para que lo puedas ejecutar teniendo cerrado el archivo pero ese es otro tema)

*Todo esto es en el modulo 1, aquí ya estarás guardando el dato de la celda "5 hoja 1" en este caso cada 1 hora siempre que excel este activo de manera automática y para colocarle la hora y fecha en que se guarda el dato, en la hoja donde estas guardando el dato le colocas este código:

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column < 3 Then '

Cells(Target.Row, 3).Value = Now 'en este el 3 quiere decir que en esa celda es que se va a actualizar
End If
Automaticamente sin formato
End Sub

Espero la respuesta te sea de utilidad no olvides valorarla.

Cuéntame te sirvió o no, solo debes iniciar la macro... y ya, no olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas