Excel

Tengo una aplicación que hace que el valor de una celda en exel cambie constantemente... Lo que necesito ahora es capturar el valor de esa celda cada cierto tiempo (cada 10 minutos) y guardarlo en un registro que puede ser otra hoja del mismo libro, mejor dicho necesito llevar un registro de los valores que me muestra esa celda y quiero que el muestreo se haga cada cierto tiempo.
Respuesta
1
Para lograr lo que quieres conozco dos alternativas:
Usando el método OnTime de Excel
Usando API de Windows
Eres muy poco explicito y no das detalles de tus conocimientos de programación, así que asumiré que: no tienes problemas para implementar una macro y que te gusta investigar...
Para el uso del método OnTime puede leer el articulo que esta en mi página
http://www.sistemaslym.net/vba/excel/exarc1.html
En el se explica su uso entre otras cosas...
Para el uso de API de Windows, el siguiente ejemplo te muestra un reloj en la celda A1, si analizas el código, puedes, adaptarlo a los 10 minutos que quieres y que no muestre el reloj, sino que mueva o registre el valor de la celda que te interesa, saludos...
Mauricio
Option Explicit
Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, _
ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, _
ByVal nIDEvent As Long) As Long
Dim TimerID As Long
Private Sub IniciarTimer(ByVal Intervalo As Long)
#If VBA6 Then
TimerID = SetTimer(0, 0, Intervalo, AddressOf TimerExecute)
#End If
End Sub
Public Sub DetenerReloj()
KillTimer 0, TimerID
End Sub
Private Sub TimerExecute()
Dim strReloj As String
On Error Resume Next
strReloj = Format(Now, "HH:mm:ss")
'ActiveCell.Value = strReloj
Range("A1").Value = strReloj
End Sub
Public Sub IniciarReloj()
Range("A1").Font.Bold = True
IniciarTimer 1000
End Sub
*==========================================*
La presente respuesta ha demandado un tiempo de lectura,
análisis, elaboración y redacción. A cambio, simplemente,
pretendo que te tomes un minuto para FINALIZARLA, si
hubiera satisfecho -en alguna medida- tu requerimiento.
En caso contrario, puedes preguntarme nuevamente
aclarando qué entendí mal o qué faltó.

1 respuesta más de otro experto

Respuesta
1
Se puede utilizar el método Application. OnTime.
(1) StartTemporizador: Inicia el temporizador
(2) Stoptemporizador: Termina el temporizador (es importante terminarlo)
(3) tu_Sub: Tus instrucciones
Espero que te sea útil/anders
Public datHora As Date
Public Const conIntervalo = 600 'diez min.
Public Const conRunMacro = "Tu_Sub" 'tu proced.
Sub StartTemporizador()
datHora = Now + TimeSerial(0, 0, conIntervalo)
'iniciar el temporizador
Application.OnTime _
Earliesttime:=datHora, _
Procedure:=conRunMacro, _
Schedule:=True
End Sub
Sub tu_Sub()
MsgBox datHora 'o cualquier instrucción
'reiniciar el temporizador
StartTemporizador
End Sub
Sub StopTemporizador()
On Error Resume Next
'desactivar el temporizador
Application.OnTime _
Earliesttime:=datHora, _
Procedure:=conRunMacro, _
Schedule:=False
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas