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 todos
Sub 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 todos
Sub 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