VBA Tipp: ASCII-Zeichen in Datei zählen

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Ich möchte effizient ermitteln, wie oft ein bestimmtes ASCII-Zeichen in einer Datei vorkommt.

Lösung:

Das leistet die folgende Funktion:

Public Function CountChar(FName As String, Optional SrcChar As Byte = 10)
Dim Chan As Integer, Buf(1023) As Byte, Cnt As Long
Dim I As Long, L As Long, Lg As Long
  Chan = FreeFile()
  Open FName For Binary Access Read As Chan
  Lg = FileLen(FName)
  Do
    L = Lg
    If L > 1024 Then L = 1024
    Get Chan, , Buf
    For I = 0 To L - 1
      If Buf(I) = SrcChar Then Cnt = Cnt + 1
    Next I
    Lg = Lg - L
  Loop Until Lg <= 0
  Close Chan
  CountChar = Cnt
End Function

Aufruf

Um die Zahl der Zeilenenden (LF) zu ermitteln:

CountChar("C:\MeinVerzeichnis\MeineDatei.TXT")

oder, um die Zahl der Seitenvorschübe (FF) festzustellen:

CountChar("C:\MeinVerzeichnis\MeineDatei.PRN",12)