VBA - Čitanje tekstualne datoteke redak po redak

Ovaj će vodič pokazati kako čitati sadržaj iz tekstualnih datoteka redak po redak s VBA -om.

Tekstualnu datoteku možemo čitati kao cijelu datoteku ili redak po redak.

Čitajte tekstualnu datoteku redak po redak

Tekst u tekstualnoj datoteci obično se sastoji od nekoliko redaka, odvojenih graničnicima. To mogu biti zarez (“,”), zarez s razmakom (“,“), točka -zarez (“;”), točka -zarez s razmakom (“;“), razmak (““), kartica (vbTab ) ili u rijetkim slučajevima bilo koji drugi znak poput tilde (~). Linije su obično odvojene prijelomom retka (vbCRLF).

Najjednostavniji način čitanja tekstualne datoteke redak po redak na našem radnom listu u VBA je odabir prve ćelije u koju želimo staviti tekst, a zatim pokrenite sljedeći kod:

1234567891011 Podčitana datoteka ()Dim strFile As String, strLine As StringstrFile = "C: \ Test \ TestFile.txt"Otvorite strFile za unos kao #1Do Do EOF (1)Linijski ulaz #1, strLineActiveCell = strLineActiveCell.Offset (1, 0) .OdaberitePetljaZatvori #1Kraj podm

Time će se svaki redak tekstualne datoteke staviti u jednu ćeliju u Excelu.

Također možemo čitati tekstualnu datoteku u VBA pomoću FileSystemObject. U donjem kodu koristili smo kasno vezivanje za objekt datotečnog sustava. Također možete stvoriti referencu na to u svom VBA projektu. Za više informacija pogledajte ovdje.

123456789101112131415 Sub ReadTextFile ()Dim strLine As StringZatamnite FSO kao objektDim TSO kao objektPostavi FSO = CreateObject ("Scripting.FileSystemObject")Postavi TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Radite dok niste TSO.AtEndOfStreamstrLine = TSO.ReadLineActiveCell = strLineActiveCell.Offset (1, 0) .OdaberitePetljaTSO.ZatvoritePostavite TSO = NištaPostavite FSO = NištaKraj podm

Možemo stvoriti malo kompliciraniju petlju ako želimo razdvojiti linije u ćelije po njihovim graničnicima. Ovdje smo koristili rano vezivanje u kodu i proglasili objekt datotečnog sustava.

123456789101112131415161718192021222324 Sub ReadTextFileWithSeparators ()Dim StrLine As StringZatamnite FSO kao novi FileSystemObjectDim TSO kao objektDim StrLineElements kao varijantaZatamni indeks koliko god je dugDim i As LongDim Delimiter As StringPostavi FSO = CreateObject ("Scripting.FileSystemObject")Postavi TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Razdjelnik = ","Indeks = 1Učiniti Dok TSO.AtEndOfStream = NetačnoStrLine = TSO.ReadLineStrLineElements = Split (StrLine, Delimiter)Za i = LBound (StrLineElements) Za UBound (StrLineElements)Ćelije (Indeks, i + 1). Vrijednost = StrLineElements (i)Sljedeći iIndeks = Indeks + 1PetljaTSO.ZatvoritePostavite TSO = NištaPostavite FSO = NištaKraj podm

To će rezultirati razdvajanjem redaka u pojedinačne ćelije u Excelu prema donjoj slici.

wave wave wave wave wave