Página 1 de 1
Macros em segundo plano, que identifique uma atualização
Enviado: 14 Ago 2019 às 13:58
por natanghost
Boa tarde a todos. Estou um problema a ser resolvido. Que poder ajudar, agradeço...
Tenho eu uma planilha recebendo dados externos de um arquivo de texto. Esse arquivo de texto é gerando por um sistema. Gostaria de saber se existe uma forma de criar uma macro em segundo plano que fique rodando ininterruptamente testando se o arquivo de texto foi atualizado, verificando a ultima data de alteração registrada pelo windows. Agradeço desde já.
Re: Macros em segundo plano, que identifique uma atualização
Enviado: 15 Ago 2019 às 08:50
por eduardogrigull
Olá. Tente usar esse código: Basta substituir o caminho do seu arquivo... Após ele achar a data de modificação, voce insere o seu "tratamento" de acordo com a data/hora, deixei um exemplo de como extrair isso...
Código: Selecionar todosSub DescobrirModificacao()
Dim arquivo As New Scripting.FileSystemObject
Dim UltimaMod As String
Set arquivo = New Scripting.FileSystemObject
'Definir caminho
caminho = "C:/Desktop/texto.txt"
'Checar se o caminho existe
If arquivo.FileExists(caminho) Then
'Existe
Else
'Nao existe o arquivo
MsgBox "Erro! O arquivo nao existe!", vbExclamation
Exit Sub
End If
'Definir ultima modificacao ("11.12.2019 13:45:02")
UltimaMod = arquivo.GetFile(caminho).DateLastModified
'Seu codigo......................................
'Podes usar o Mid pra extrair só a data/hora
'Data = Mid(UltimaMod, 1, 10)
'hora = Mid(UltimaMod, 12, 8)
End Sub
Macros em segundo plano, que identifique uma atualização
Enviado: 18 Ago 2019 às 13:40
por natanghost
Obrigado, resolveu parte do problema. E como faço para rodar essa macro dentro em outro fluxo no excel(caso seja possível) de forma ininterrupta ou pelo menos de tempos em tempos, fazendo essa verificação?
Re: Macros em segundo plano, que identifique uma atualização
Enviado: 18 Ago 2019 às 14:25
por eduardogrigull
Ok. Está funcionando agora. Lembre-se de declarar a referencia: Microsoft Scripting Runtime.
No Sub "SeuCodigo" ponha o seu código, e chame a ultima modificação através da variável/function ... No fim deixe o "Call Verificador"
Código: Selecionar todosSub Verificador()
Application.OnTime Now + TimeValue("00:00:05"), "SeuCodigo"
End Sub
Function UltimaModificacao() As String
'!!!!! >>>>>>> Adicione a referencia = Microsoft Scripting Runtime <<<<<<<<<<< !!!!!!
Dim arquivo As New Scripting.FileSystemObject
Set arquivo = New Scripting.FileSystemObject
'Definir caminho
caminho = "D:/Desktop/texto.txt"
'Checar se o caminho existe
If Not arquivo.FileExists(caminho) Then
UltimaModificacao = ""
Exit Function
End If
'Definir ultima modificacao ("11.12.2019 13:45:02")
UltimaModificacao = arquivo.GetFile(caminho).DateLastModified
End Function
Sub SeuCodigo()
'Seu codigo...
'Ultima modificacao é só chamar pela variavel UltimaModificacao
'Deixar isso no fim
Call Verificador
End Sub