Menu Sluiten

Kladblokjes uitlezen in VBA

Functies vba macro excel

Met de onderstaande code ben je in staat om regel voor regel de inhoud van een bepaald kladblok bestand uit te lezen. In het hieronder gekozen voorbeeld Heb ik ervoor gekozen om de waarde van deze regel te tonen middels een berichtbox

Function TXTuitlezen(bestand As String) As String
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set TXTlezen = fso.OpenTextFile(bestand, ForReading, False)
    
    Do While Not TXTlezen.AtEndOfStream
        MsgBox TXTlezen.ReadLine
    Loop
    TXTlezen.Close
End Function

Op deze manier roep je de functie aan binnen een sub:

Sub AanroepTxtFunctie()

    bestand = "D:\VBA testen\KladblokTestBestand.txt"
    TXTuitlezen (bestand)

End Sub

Je kunt deze code echter ook gebruiken om bijvoorbeeld een zoekactie uit te voeren naar bepaalde tekst in een kladblok bestand. In dat geval haal je de berichtbox weg en vervang je deze door een string functie.

Function TXTuitlezenPlusZoeken(bestand As String, zoekwoord As String) As String

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set TXTlezen = fso.OpenTextFile(bestand, ForReading, False)
    teller = 0
    Do While Not TXTlezen.AtEndOfStream
        teller = teller + 1
        TekstopRegel = TXTlezen.ReadLine
        If InStr(TekstopRegel, zoekwoord) > 0 Then
            MsgBox "Het zoekwoord " & zoekwoord & " is gevonden op regel " & teller
        End If
    Loop
    TXTlezen.Close
    
End Function

Deze roep je nu iets anders aan vanwege het feit dat hij nu twee input variabelen heeft. Het bestand en het zoekwoord. 

Sub AanroepTxtFunctiePlusZoeken()
    Dim bestand As String
    Dim zoekwoord As String
    
    bestand = "D:\VBA testen\KladblokTestBestand.txt"
    zoekwoord = "MacroExcel"
    TXTuitlezenPlusZoeken bestand, zoekwoord

End Sub

Mocht het zoekwoord gevonden worden dan krijg nu de volgende berichtbox te zien:

Heeft dit artikel je geholpen?

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *