Adresse
Søvangsvej 1 DK-2650 Hvidovre
Telefon
(+45) 71 10 02 03
Mail
info@nordicwebdesign.dk

Sådan bruges VBA-kode til at fjerne tomme linjer fra en tekstfil

Hvis du nogensinde har arbejdet med tekstfiler, vil du vide, hvor frustrerende det kan være at fjerne tomme linjer. En del af problemet er, at du ikke vil fjerne enhver tom linje, ellers kan det forstyrre formateringen af ​​dokumentet.

Denne artikel viser dig, hvordan du fjerner et bestemt antal tomme linjer fra en tekstfil ved hjælp af VBA kodning i almindelig fornuft.

Åbning og læsning af tekstfilen

Kodenes logik indebærer at læse hver linje i filen og gemme linjen i en tekststreng, hvis det opfylder vores kriterier. Så skriver vi tekststrengen tilbage til en ny fil.

Først kommer vi til filsystemobjektet (FSO) og åbner filen, som vi har navngivet "blanks.txt". Koden for adgang til filsystemet er den slags procedure, du måske vil gemme i et kodebibliotek til fremtidig reference.

 Dim fso Som Scripting.FileSystemObject
Indstil fso = New Scripting.FileSystemObject
Dim myFile som objekt
Dim filPath As String

filePath = ActiveWorkbook.path & " files blanks.txt"
Sæt myFile = fso.openTextFile (filPath)

Fjernelse af de tomme linjer

Nu kan vi læse hver linje i filen, men først vi

Vi skal begynde med at definere flere variabler og give dem indledende værdier.

 'Inkluder linjen i den nye fil ?
Dim includeLine As Boolean

'Tekststrengen for at skrive de medfølgende linjer til
Dim allTxt as string

'Antallet af tomme linjer, der skal medtages i den nye fil
Dim countBlanks As Long

countBlanks = 1
inkluderer Blanks = 0
includeLine = False

Den indledende indstilling for tomme linjer er sat til 1, så vi forstyrrer ikke nogen afsnit pauser. Hvis vi ønskede at fjerne enhver tom linje, ville vi indstille variablen til 0.

Nu kan vi læse filen og fortælle koden, hvilke linjer der skal skrives til den nye fil.

 ] Gør Indtil MyFile.AtEndOfStream 

includeLine = False

txt = myFile.ReadLine

Standard for hver linje er at ikke inkludere den i den nye fil medmindre det opfylder de kriterier, der er defineret i de næste par rækker af kode. Antallet af tomme linjer tælles, indtil der er fundet en ikke-blank linje, og derefter tæller tælleren tilbage til nul.

 Vælg Case Len (txt) 

Case 0

Hvis countBlanks <includeBlanks Then includeLine = True

countBlanks = countBlanks + 1

Case Else

countBlanks = 0

includeLine = True

End Vælg

Hvis linjen opfylder vores parametre, tilføjer vi den med et nyt linjetegn til txt streng og fortsæt sløjfen.

 Hvis includeLine Then
allTxt = allTxt & txt & vbCrLf
Slut Hvis
Loop

Med læsningen af ​​den færdige tekstfil lukker vi filen og skriver tekststrengen til den nye fil.

 myFile.close
filePath = ActiveWorkbook.path & " files blanksRemoved.txt"
Indstil myFile = fso.CreateTextFile (filePath)
myFile.Write allTxt
myFile.Close
Set fso = Intet

Med denne type filredigering er det vigtigt ikke at overskrive den oprindelige fil, hvis der opstår noget uventet, og du mister alle dataene. Selv når du er sikker på, at koden fungerer korrekt, er det fornuftigt at lave en kopi – ved hjælp af VBA – for at beskytte de oprindelige data.

Sammenfatning Sammenfatning

Fordi at arbejde med tekstfiler er en almindelig begivenhed for de fleste Excel-udviklere, er det en god ide at udvikle relevante procedurer, som du kan gemme til fremtidig reference – i stedet for at søge svaret, når tiden er til en præmie.


Skriv til os