Olá amigos.
Estou desenvolvendo em VBA Access 2016 uma ferramenta para automação de algumas rotinas em minha empresa. Este projeto surgiu por conta da necessidade de usar o Agendador de Tarefas do Windows que foi bloqueado pela nossa área de SI (Segurança da Informação).
Bem, pesquisando aqui no Fórum, encontrei uma solução publicada pelo JPaulo (Grande Mestre) que atendeu minhas necessidades depois de alguns ajustes que fiz. Segue o Código abaixo.
1 - O que fiz?
Na tabela Schedule criei os registros de todos os eventos programados para execução. A descrição dos Registros são os próprios Eventos a serem executados (nome do evento).
2 - Criei uma Function BuscaEvento(ByVal Tarefa As String) - código abaixo, que retorna uma string - nome do evento a ser executado no horário programado.
Ocorre que no horário programado, o VBA está disparando a seguinte mensagem:
Erro de Compilação: Era esperado Sub, Function ou Property
Com este erro ele não executa a Rotina/Evento que na realidade é uma Function escrita em VBA para ser executada.
Alguém poderia me ajudar a descobrir onde está o erro?
Já tentei de tudo.
Desde já agradeço a ajuda dos amigos.
Obrigado
Luiz Farias
===================================================================================================================================================
Private Sub Form_Timer()
'By JPaulo Maximo Access
'Modificado em 28/09/2017 por Luiz Farias
'para GI-IOP L'Oréal Brasil
Static strHora As Integer
Static strMinutos As Integer
Static strSegundos As Integer
Dim Evento As String
Dim Tarefa As String
If Trim(lblTime.Caption) <> "00:00:00" Then
strHora = Hour(Time())
strMinutos = Minute(Time())
strSegundos = Second(Time())
End If
strSegundos = strSegundos + 1
If strSegundos = 60 Then
strSegundos = 0
strMinutos = strMinutos + 1
If strMinutos = 60 Then
strMinutos = 0
strHora = strHora + 1
If strHora = 24 Then
strHora = 0
End If
End If
End If
'O intervalo de tempo para execução da rotina é definida na tabela 01_Schedule
lblTime.Caption = Format(strHora, "00") & ":" & Format(strMinutos, "00") & ":" & Format(strSegundos, "00")
Tarefa = Format(strHora, "00") & ":" & Format(strMinutos, "00") & ":" & Format(strSegundos, "00")
Call BuscaEvento(Tarefa)
End Sub
===================================================================================================================================================
Function BuscaEvento(ByVal Tarefa As String)
Dim ExisteEvento As Boolean
Dim Evento As String
ExisteEvento = IsNull(DLookup("[Evento]", "[01_Schedule]", "[HraInicio] = " & "'" & Tarefa & "'"))
If ExisteEvento = True Then
Exit Function
Else
Evento = DLookup("[Evento]", "[01_Schedule]", "[HraInicio] = " & "'" & Tarefa & "'")
Call Evento
End If
End Function
===================================================================================================================================================
Estou desenvolvendo em VBA Access 2016 uma ferramenta para automação de algumas rotinas em minha empresa. Este projeto surgiu por conta da necessidade de usar o Agendador de Tarefas do Windows que foi bloqueado pela nossa área de SI (Segurança da Informação).
Bem, pesquisando aqui no Fórum, encontrei uma solução publicada pelo JPaulo (Grande Mestre) que atendeu minhas necessidades depois de alguns ajustes que fiz. Segue o Código abaixo.
1 - O que fiz?
Na tabela Schedule criei os registros de todos os eventos programados para execução. A descrição dos Registros são os próprios Eventos a serem executados (nome do evento).
2 - Criei uma Function BuscaEvento(ByVal Tarefa As String) - código abaixo, que retorna uma string - nome do evento a ser executado no horário programado.
Ocorre que no horário programado, o VBA está disparando a seguinte mensagem:
Erro de Compilação: Era esperado Sub, Function ou Property
Com este erro ele não executa a Rotina/Evento que na realidade é uma Function escrita em VBA para ser executada.
Alguém poderia me ajudar a descobrir onde está o erro?
Já tentei de tudo.
Desde já agradeço a ajuda dos amigos.
Obrigado
Luiz Farias
===================================================================================================================================================
Private Sub Form_Timer()
'By JPaulo Maximo Access
'Modificado em 28/09/2017 por Luiz Farias
'para GI-IOP L'Oréal Brasil
Static strHora As Integer
Static strMinutos As Integer
Static strSegundos As Integer
Dim Evento As String
Dim Tarefa As String
If Trim(lblTime.Caption) <> "00:00:00" Then
strHora = Hour(Time())
strMinutos = Minute(Time())
strSegundos = Second(Time())
End If
strSegundos = strSegundos + 1
If strSegundos = 60 Then
strSegundos = 0
strMinutos = strMinutos + 1
If strMinutos = 60 Then
strMinutos = 0
strHora = strHora + 1
If strHora = 24 Then
strHora = 0
End If
End If
End If
'O intervalo de tempo para execução da rotina é definida na tabela 01_Schedule
lblTime.Caption = Format(strHora, "00") & ":" & Format(strMinutos, "00") & ":" & Format(strSegundos, "00")
Tarefa = Format(strHora, "00") & ":" & Format(strMinutos, "00") & ":" & Format(strSegundos, "00")
Call BuscaEvento(Tarefa)
End Sub
===================================================================================================================================================
Function BuscaEvento(ByVal Tarefa As String)
Dim ExisteEvento As Boolean
Dim Evento As String
ExisteEvento = IsNull(DLookup("[Evento]", "[01_Schedule]", "[HraInicio] = " & "'" & Tarefa & "'"))
If ExisteEvento = True Then
Exit Function
Else
Evento = DLookup("[Evento]", "[01_Schedule]", "[HraInicio] = " & "'" & Tarefa & "'")
Call Evento
End If
End Function
===================================================================================================================================================