Por que eu desejaria saber o conteúdo de um arquivo texto fora da minha aplicação, seja MS Excel, MS Access, MS Outlook, etc...?
Talvez precisemos medir, controlar, ou acompanhar um processo que será administrado por nossa aplicação, mas que ocorra fora dela.
Mas imagine o seguinte: Um processo em andamento, sendo executado através de Shell - Um código externo, fora da nossa aplicação, o qual não pode ser controlado através do nosso código VBA.Como medir em que passo está?Como saber se está dando certo?Como saber se já terminou?
Isso é bem comum, quando por exemplo executamos um Script SQL. E ao invés de usarmos um arquivo BATCH para processarmos diversos Scripts, desejamos controlar o andamento através de nossa aplicação MS Access.Neste caso, e na maioria dos demais, podemos solicitar ao Script que retorne alguma informação como a saída do resultado do processamento para um arquivo texto. Após a análise do conteúdo deste arquivo, continuamos com a seqüência seguinte.
Ok, já entendi, mas como verificarei o conteúdo do arquivo texto?
Segue: Para usar essa função é necessário fazer referência ao Microsoft Scripting Runtime (scrrun.dll)
Function rTxtFile (sSearchText As String, sFileName As String) As Boolean' Author: André Luiz Bernardes - Bernardess@gmail.com.' Date: 10/04/2011 - 16:14.' Application:' Functionality: Detecta uma palavra dentro do arquivo texto.Dim oFSO As New FileSystemObjectDim oFS As VariantDim sText As VariantDim nParticula As VariantDim Encontrou As IntegerSet oFS = oFSO.OpenTextFile(sFileName)Let Encontrou = 0Do Until oFS.AtEndOfStreamLet sText = UCase(oFS.ReadLine)Let nParticula = InStr(1, sText, sSearchText, vbTextCompare)If nParticula <> 0 ThenLet Encontrou = Encontrou + 1End IfLoopIf Encontrou = 0 ThenLet rTxtFile = FalseElseLet rTxtFile = TrueEnd IfEnd Function
Como usar:
Sub iii()Let encontrou = rTxtFile("Error", "C:\Bernardes\Scripts\log_100413134457.txt")End Sub
Tags: VBA, tips, Microsoft Scripting Runtime, FileSystemObject, script, scrrun.dll, SQL, text, file, arquivo, batch,