VBA - Læs tekstfil linje for linje

Indholdsfortegnelse

Denne vejledning viser, hvordan du læser indhold fra tekstfiler linje for linje med VBA.

Vi kan enten læse tekstfilen som en hel fil eller linje for linje.

Læs tekstfil linje for linje

Tekst i en tekstfil består normalt af flere linjer, adskilt af afgrænsere. Disse kan være et komma (","), et komma med mellemrum (","), et semikolon (";"), et semikolon med mellemrum (";"), et mellemrum (""), en fane (vbTab ) eller i sjældne tilfælde enhver anden karakter, såsom en tilde (~). Linjerne adskilles normalt med et linjeskift (vbCRLF).

Den nemmeste måde at læse en tekstfil linje for linje i vores regneark i VBA er at markere den første celle, hvor vi vil have teksten, og derefter køre følgende kode:

1234567891011 Sub ReadFile ()Dim strFile As String, strLine As StringstrFile = "C: \ Test \ TestFile.txt"Åbn strFile til input som #1Gør indtil EOF (1)Linjeindgang #1, strLineActiveCell = strLineActiveCell.Offset (1, 0) .VælgSløjfeLuk #1Afslut Sub

Dette vil sætte hver linje i tekstfilen i en enkelt celle i Excel.

Vi kan også læse en tekstfil i VBA ved hjælp af FileSystemObject. I nedenstående kode har vi brugt sen binding med filsystemobjektet. Du kan også oprette en reference til den i dit VBA -projekt. Se her for mere information.

123456789101112131415 Sub ReadTextFile ()Dim strLine som strengDim FSO som objektDim TSO som objektIndstil FSO = CreateObject ("Scripting.FileSystemObject")Indstil TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Do While Not TSO.AtEndOfStreamstrLine = TSO.ReadLineActiveCell = strLineActiveCell.Offset (1, 0) .VælgSløjfeTSO. LukIndstil TSO = IntetIndstil FSO = IntetAfslut Sub

Vi kan oprette en lidt mere kompliceret sløjfe, hvis vi vil adskille linjerne i celler ved hjælp af deres afgrænsere. Her har vi brugt tidlig binding i koden og erklæret filsystemobjektet.

123456789101112131415161718192021222324 Sub ReadTextFileWithSeparators ()Dim StrLine som strengDim FSO som nyt filsystemsystemDim TSO som objektDim StrLineElements som variantDim indeks så længeDim i så længeDim afgrænser som strengIndstil FSO = CreateObject ("Scripting.FileSystemObject")Indstil TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Afgrænser = ","Indeks = 1Gør Mens TSO.AtEndOfStream = FalskStrLine = TSO.ReadLineStrLineElements = Split (StrLine, afgrænser)For i = LBound (StrLineElements) Til UBound (StrLineElements)Celler (indeks, i + 1) .Værdi = StrLineElements (i)Næste iIndeks = Indeks + 1SløjfeTSO. LukIndstil TSO = IntetIndstil FSO = IntetAfslut Sub

Dette vil resultere i, at linjerne adskilles i individuelle celler i Excel i henhold til grafikken herunder.

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave