VBA Tips - Detectando conteúdo num arquivo texto externo à aplicação





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 FileSystemObject

    Dim oFS As Variant

    Dim sText As Variant

    Dim nParticula As Variant

    Dim Encontrou As Integer



    Set oFS = oFSO.OpenTextFile(sFileName)



    Let Encontrou = 0



    Do Until oFS.AtEndOfStream


        Let sText = UCase(oFS.ReadLine)

        Let nParticula = InStr(1, sText, sSearchText, vbTextCompare)

        

        If nParticula <> 0 Then

            Let Encontrou = Encontrou + 1

        End If


    Loop



    If Encontrou = 0 Then

        Let rTxtFile = False

    Else

        Let rTxtFile = True

    End If

End 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, 





Nenhum comentário:

Postar um comentário

diHITT - Notícias