Agendar execução de processos no Excel (Schedule)

Objetivo: Demonstrar a utilização do agendamento de processos no Excel. Neste exemplo é criada uma agenda que fala quando á tarefas pendentes.

//

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

 

Neste exemplo você tem a demonstração do uso de várias técnicas explicadas em vários artigos no Guia do Excel.

Foram utilizados:

  1. Zebrar Planilhas
  2. Controle de Cheques com VBA
  3. Planilha que fala

Além das técnicas acima foi utilizado um recurso ainda não explicado, o Agendamento de execuções no Excel

Este procedimento executa um procedimento que é chamado em determinado horário conforme abaixo, no exemplo abaixo é chamado o procedimento MyMacro disparado ás 15:00.

 

Application.OnTime TimeValue("15:00:00"), "MyMacro"

Na planilha observando o código fonte você verá o exemplo de um agendamento recursivo dos dados que foi baseado em um exemplo exibido no livro VBA e Macros para Microsoft Excel 2007 de Bill Jelen e Tracy Syrstad.

O objetivo do agendamento na planilha é realizar a atualização da planilha a cada dois minutos, realizando um novo agendamento a cada execução do procedimento.

Abaixo o código fonte com os comentários:

Public Sub lsExecutaAtualizacao()
    Dim lRange As Range

    Set lRange = Selection
    
    'Atualiza o horário na planilha
    ActiveWorkbook.RefreshAll
    Range("F1").Select
    ActiveCell.FormulaR1C1 = "=NOW()"

    lRange.Select

    'Realiza a identificação se há alguma tarefa em aberto
    If Range("E1").Value > 0 Then
        'Aqui você pode escolher a execução do alarme ou 
        'de um alerta de voz da quantidade de agendamentos
        'Caso queira o alarme, descomente o código abaixo e comente a linha Application...
        'Alarme
        Application.Speech.Speak Text:="You have " & Range("E1").Value & " events"
    End If

End Sub
'Procedimento que agenda uma nova execução a cada execução
Public Sub lsSchedule()
    Dim lHoras      As Integer
    Dim lMinutos    As Integer
    Dim lSegundos   As Integer

    lHoras = 0
    lMinutos = 2
    lSegundos = 0

    NameOfThisProcedure = "lsSchedule"
    NameOfScheduleProc = "lsExecutaAtualizacao"

    'Hora atual mais dois minutos
    lProximo = Time + TimeSerial(lHoras, lMinutos, lSegundos)
    'Realiza o agendamento do procedimento
    Application.OnTime EarliestTime:=lProximo, Procedure:=NameOfThisProcedure

    'Executa a execução da atualização da planilha
    Application.Run NameOfScheduleProc
End Sub

Sub Alarme()
    Dim j As Integer

    For j = 1 To 3
        Beep
        start2 = Now() + TimeSerial(0, 0, 1)
        Application.Wait start2
    Next j
End Sub

GUT PPT

Abraço

Marcos Rieper

//

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.