Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por natanghost 14 Ago 2019 às 15:58
Membro Novato
Mensagens: 3
Reputação: 0
#46862
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á.
Por eduardogrigull 15 Ago 2019 às 10:50
Membro 2 Estrelas
Mensagens: 158
Reputação: 71
#46893
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
Por natanghost 18 Ago 2019 às 15:40
Membro Novato
Mensagens: 3
Reputação: 0
#47015
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?
Por eduardogrigull 18 Ago 2019 às 16:25
Membro 2 Estrelas
Mensagens: 158
Reputação: 71
#47017
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