Macro que guarde a cada cierta hora segun hora del PC

Anteriormente tenia una macro en Power point que guardaba en ubicaciones distintas en diferentes tiempos, que me funciono perfecto, pero ahora quiero agregarle a la macro a cierta hora según la hora del PC, por ejemplo, que empiece a guardar todos los días desde las 7:35, 8:05, 8:35 a si sucesivamente, ¿esto se podría hacer?

Adjunto la macro actual

Esta macro fue de mucha ayuda, con la ayuda de Dante Amor

-------------------------------------------------------------------------------------------------------------------------------------------------

Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal _
lpTimerFunc As Long) As Long
Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Dim lngTimerID As Long
Dim n As Integer
'
Sub Iniciar()
'
n = 0
lngTimerID = SetTimer(0, 0, 300000, AddressOf Guardar)
End Sub
'
Sub Guardar()
'
ubicaiones = Array("c:\trabajo\varios\", "C:\trabajo\diario\", "C:\trabajo\ejemplo\")
ruta = ubicaciones(n)
Application.ActivePresentation.SaveCopyAs ruta & "respaldo"
n = n + 1
If n > UBound(ubicaciones) Then n = 0
MsgBox "Guardado"
End Sub
'
Sub Detener()
'
lngTimerID = KillTimer(0, lngTimerID)
End Sub
Sub HelloTimer()
MsgBox "Hello Timer : " & Now
End Sub

1 Respuesta

Respuesta
2

H o l a:

Con la siguiente macro estableces la hora de inicio = "7:35 a.m." 

La macro revisará la hora cada minuto y si son las 7:35 a.m., entonces guardará el archivo, el siguiente guardado lo hará a las 8:05

Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal _
    lpTimerFunc As Long) As Long
Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Dim lngTimerID As Long
Dim n As Integer
Public hora As Date
'
Sub Iniciar()
'Referencia: https://social.msdn.microsoft.com/Forums/en-US/9f6891f2-d0c4-47a6-b63f-48405aae4022/powerpoint-run-macro-on-timer?forum=isvvba
'Por.Dante Amor
    n = 0
    hora = "7:35 a.m."                                      'hora de inicio
    If Time > hora Then
        hora = Hour(Time) & ":00"
    End If
    lngTimerID = SetTimer(0, 0, 10000, AddressOf Guardar)   'Revisa la hora cada minuto
End Sub
'
Sub Guardar()
'Por.Dante Amor
    ubicaciones = Array("c:\trabajo\varios\", "C:\trabajo\diario\", "C:\trabajo\ejemplo\")
    ruta = ubicaciones(n)
    If Time >= hora Then
        hora = hora + "0:30"                                'aumenta la hora 30 minutos
        Application.ActivePresentation.SaveCopyAs ruta & "respaldo"
        n = n + 1
        If n > UBound(ubicaciones) Then n = 0
        MsgBox "Guardado " & n & " " & hora
    End If
End Sub
'
Sub Detener()
'Por.Dante Amor
    lngTimerID = KillTimer(0, lngTimerID)
End Sub

':)
'S aludos. D a n t e   A m o r . R ecuerda valorar la respuesta. G racias
':)

Buen día Dante

Una pregunta la macro empieza a guardar desde las 7:35 en adelante, o solo guarda una vez sea las 7:35

Empieza a las 7:35 y continuando guardando cada 30 minutos.

':)
'S aludos. D a n t e   A m o r . R ecuerda valorar la respuesta. G racias
':)

Dante, pero la macro me toca ejecutarla manualmente o ella se empieza a ejecutar a las 7:35 am, automáticamente

Primero, deberías crear una tarea en tareas de programadas, para indicarle que todos los días a las 7:30 a.m. abra el archivo de powerpoint.

Aquí te muestro un ejemplo:

EJECUTAR macro a cierta fecha y a cierta hora


Segundo, para ejecutar la macro "Iniciar", revisa cómo ejecutar una macro al abrir powerpoint en el siguiente enlace:

http://answers.microsoft.com/es-es/office/forum/office_2003-powerpoint/ejecutar-macro-autom%C3%A1ticamente-al-abrir/6f62a6f0-a7a6-43a2-b24e-1dc600c7d9cc?auth=1 


De esa forma podrías programas que todos los días se abra el libro y que cuando se abra el libro ejecute la macro "Iniciar", la macro "Iniciar" ya está preparada para ejecutarse cada minuto y hacer un respaldo cada 30 minutos.

S a l u d o s

Hola dante

Ya hice la prueba y perfecto si me funciono, pero tengo otra duda tu me le podrías agregar hora de terminación, por ejemplo que empiece a las 7:35am y que termine a las 5:35 pm

Si puedes

Gracias Dante

Prueba lo siguiente:

Sub Iniciar()
'Referencia: https://social.msdn.microsoft.com/Forums/en-US/9f6891f2-d0c4-47a6-b63f-48405aae4022/powerpoint-run-macro-on-timer?forum=isvvba
'Por.Dante Amor
    n = 0
    hora = "7:35 a.m."                                      'hora de inicio
    If Time > hora Then
        hora = Hour(Time) & ":00"
    End If
    If time > "5:35 p.m." then
        call detener
        exit sub
    end if
    lngTimerID = SetTimer(0, 0, 10000, AddressOf Guardar)   'Revisa la hora cada minuto
End Sub

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas