Planilha de Agenda Excel VBA que Fala

Planilha de Agenda Excel VBA que Fala

Neste artigo você vai aprender como agendar tarefas no Excel com VBA e também ver uma planilha de agenda que fala.

Verá várias técnicas interessantes que podem ser aplicadas nos seus projetos e também pode fazer o download gratuito da planilha deste artigo. 

Como Agendar Horários de Execução no Excel com VBA

Neste artigo nós iremos demonstrar como criar agendamentos no Excel utilizando Application.OnTime do VBA no Excel.

É um exemplo prático no qual iremos fazer com que o Excel nos avise 30 minutos antes todas as tarefas que estão agendadas e também as em atraso.

A estrutura da nossa agenda possui as seguintes colunas:

Agendar atividades excel VBA

  1. Data: Data da tarefa
  2. Horário: Horário em que deve ser realizada a tarefa
  3. Tarefa: A descrição da tarefa, o Excel irá ler este conteúdo
  4. Conclusão: Data e horário da conclusão. Iremos fazer um VBA que irá preencher a data de conclusão ao realizarmos um duplo clique neste campo.
  5. Controle: Coluna de controle com uma fórmula que indica se a tarefa deve ou não ser lida. Se está ou não dentro do horário do aviso.

Código VBA para Preencher a Data e Horário de Conclusão

Na planilha de agenda incluímos um processo que ao dar um duplo na célula da coluna Conclusão o sistema irá preencher com a data e horário em que foi realizada a tarefa.

Para isso usamos o seguinte código VBA:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Cells(Target.Row, 5).Value <> "" Then
        Target.Value = ""
    Else
        Target.Value = Now()
    End If
    Cancel = True
End Sub

Este procedimento acima foi incluso na planilha Agenda no VBE.

Lendo o código temos que se a coluna 5 da linha em que houve o click estiver vazia, o Excel irá então colocar a data e hora atual (Now() do VBA Excel), senão irá preencher com vazio.

Agenda que fala as tarefas nos horários Excel

 

Código VBA Excel para Fazer a Planilha Falar em Português

O Excel evoluiu bastante e agora já fala em Português inclusive.

Nós fizemos um código no VBA Excel para ler o conteúdo das células e também avisar a quantidade de tarefas em atraso.

Para isso usamos o seguinte código:

Public Sub lsExecutaAtualizacao()
    Dim lUltimaLinhaAtiva   As Long

    Calculate
    
    If Calculos.Range("Controle").Value > 0 Then
        lUltimaLinhaAtiva = Agenda.Cells(Agenda.Rows.Count, 2).End(xlUp).Row
    
        'Alarme
        Application.Speech.Speak Text:="Você tem " & Calculos.Range("Controle").Value & IIf(Calculos.Range("Controle").Value > 1, " eventos", "evento")
        
        For i = 9 To lUltimaLinhaAtiva
            If Agenda.Cells(i, 6).Value > 0 Then
                Application.Speech.Speak Text:=Range("D" & i).Value
            End If
        Next i
    End If
    
End Sub

No vídeo que está no começo do artigo nós explicamos detalhadamente como funciona detalhadamente, criando do zero a aplicação.

Mas explicando rapidamente, o código acima faz o seguinte:

  1. Atualiza as fórmulas da planilha (Calculate)
  2. Verificar se há tarefas pendentes (If Calculos.Range(“Controle”).Value > 0 Then)
  3. Então se houver registros o sistema verifica qual a última linha da agenda (lUltimaLinhaAtiva = Agenda.Cells(Agenda.Rows.Count, 2).End(xlUp).Row)
  4. Em seguida o Excel então fala a quantidade de eventos pendentes (Application.Speech.Speak Text:=”Você tem ” & Calculos.Range(“Controle”).Value & IIf(Calculos.Range(“Controle”).Value > 1, ” eventos”, “evento”)).
  5. Por fim é feito então um loop pelas células e identificado apenas aqueles que tem número maior que 0 no controle e se tiver é lido o conteúdo da célula. (Application.Speech.Speak Text:=Range(“D” & i).Value)

Veja que para ler o conteúdo das células é utilizado um evento muito simples: Application.Speech.Speak Text:=”Aqui o seu texto”

Com este código o Excel pode ler qualquer texto e legal que é em Português ou a linguagem que estiver configurada na sua aplicação.

Código para Agendar Tarefas no Excel com VBA

Além disso temos então que fazer com que o Excel execute de tempos em tempos o procedimento lsExecutaAtualizacao.

Por exemplo, podemos agendar para que rode a cada 2 minutos e veja se há tarefas pendentes.

Para isso utilizamos o seguinte código fonte:

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)
    Application.OnTime EarliestTime:=lProximo, Procedure:=NameOfThisProcedure
    
    'Executa novo agendamento
    Application.Run NameOfScheduleProc
End Sub

Entendendo o código VBA para agendamento Excel:

  1. Na primeira parte temos então variáveis aonde temos a quantidade de horas, minutos e segundos a cada quanto tempo será executado o agendamento. No caso acima 2 minutos.
  2. Então nos campos NameOfThisProcedure e NameOfScheduleProc temos no primeiro o nome desta procedure, pois ela será então executada novamente e precisamos do nome e no segundo a tarefa que será executada no caso lsExecutarAtualizacao.
  3. Em seguida temos na variável lProximo que recebe o horário ao qual será agendada a tarefa
  4. E por fim o agendamento em Application.OnTime EarliestTime:=lProximo, Procedure:=NameOfThisProcedure. Neste código nós iremos então chamar o evento no horário definido.
  5. E em seguida realizamos um novo agendamento para a próxima rodada, ficando assim recorrente. Application.Run NameOfScheduleProc

Cálculos da Planilha

Todos os cálculos que são utilizados na planilha, assim como os seus parâmetros estão definidos na planilha cálculos.

Nela temos quando devem ser avisadas as tarefas, no caso 30 minutos antes, e também os cálculos de quantidade de controles e horários do Excel.

Agendar atividades excel VBA 2

Download da planilha de Exemplo

Para realizar o download da planilha basta se cadastrar gratuitamente na nossa newsletter e receber novidades do Guia do Excel.

Baixe a planilha