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.