Views

Histats

Vitrine

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, 





LinkWithinBrazilVBAExcelSpecialist

Related Posts Plugin for WordPress, Blogger...