VBA - Les tekstfil linje for linje

Innholdsfortegnelse

Denne opplæringen vil demonstrere hvordan du leser innhold fra tekstfiler linje for linje med VBA.

Vi kan enten lese tekstfilen som en hel fil, eller linje for linje.

Les tekstfil linje for linje

Tekst i en tekstfil består vanligvis av flere linjer, atskilt med skilletegn. Disse kan være et komma (","), et komma med mellomrom (","), et semikolon (";"), et semikolon med mellomrom (";"), et mellomrom (""), en fane (vbTab ) eller i sjeldne tilfeller andre tegn som en tilde (~). Linjene er normalt atskilt med et linjeskift (vbCRLF).

Den enkleste måten å lese en tekstfil linje for linje i vårt regneark i VBA er å velge den første cellen der vi vil at teksten skal legges, og deretter kjøre følgende kode:

1234567891011 Sub ReadFile ()Dim strFile As String, strLine As StringstrFile = "C: \ Test \ TestFile.txt"Åpen strFile For Input As #1Gjør inntil EOF (1)Linjeinngang #1, strLineActiveCell = strLineActiveCell.Offset (1, 0) .VelgLøkkeLukk #1Slutt Sub

Dette vil sette hver linje i tekstfilen til en enkelt celle i Excel.

Vi kan også lese en tekstfil i VBA ved å bruke FileSystemObject. I koden nedenfor har vi brukt sen binding med filsystemobjektet. Du kan også opprette en referanse til den i ditt VBA -prosjekt. Se her for mer informasjon.

123456789101112131415 Sub ReadTextFile ()Dim strLine Som strengDim FSO som objektDim TSO som objektSett FSO = CreateObject ("Scripting.FileSystemObject")Sett TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Do While Not TSO.AtEndOfStreamstrLine = TSO.ReadLineActiveCell = strLineActiveCell.Offset (1, 0) .VelgLøkkeTSO. LukkSett TSO = ingentingSett FSO = IngentingSlutt Sub

Vi kan lage en litt mer komplisert sløyfe hvis vi ønsker å skille linjene inn i celler av deres avgrensere. Her har vi brukt tidlig binding i koden og erklært filsystemobjektet.

123456789101112131415161718192021222324 Sub ReadTextFileWithSeparators ()Dim StrLine som strengDim FSO som nytt filsystemobjektDim TSO som objektDim StrLineElements som variantDim Index så lengeDim i As LongDim skilletegn som strengSett FSO = CreateObject ("Scripting.FileSystemObject")Sett TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Skilletegn = ","Indeks = 1Gjør mens TSO.AtEndOfStream = FalseStrLine = TSO.ReadLineStrLineElements = Split (StrLine, skilletegn)For i = LBound (StrLineElements) Til UBound (StrLineElements)Celler (indeks, i + 1) .Value = StrLineElements (i)Neste jegIndeks = Indeks + 1LøkkeTSO. LukkSett TSO = ingentingSett FSO = IngentingSlutt Sub

Dette vil resultere i at linjene blir separert i individuelle celler i Excel i henhold til grafikken nedenfor.

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave