VBA - Läs textfil rad för rad

Innehållsförteckning

Denna handledning visar hur du läser innehåll från textfiler rad för rad med VBA.

Vi kan antingen läsa textfilen som en hel fil eller rad för rad.

Läs textfil rad för rad

Text i en textfil består vanligtvis av flera rader, åtskilda med avgränsare. Dessa kan vara ett komma (","), ett komma med mellanslag (","), ett semikolon (";"), ett semikolon med mellanslag (";"), ett mellanslag (""), en flik (vbTab ) eller i sällsynta fall någon annan karaktär som en tilde (~). Linjerna separeras normalt med en radbrytning (vbCRLF).

Det enklaste sättet att läsa en textfil rad för rad i vårt kalkylblad i VBA är att markera den första cellen där vi vill att texten ska placeras och sedan köra följande kod:

1234567891011 Sub ReadFile ()Dim strFile As String, strLine As StringstrFile = "C: \ Test \ TestFile.txt"Öppna strFile för inmatning som #1Gör tills EOF (1)Linjeingång #1, strLineActiveCell = strLineActiveCell.Offset (1, 0) .VäljSlingaStäng #1Avsluta Sub

Detta kommer att placera varje rad i textfilen i en enda cell i Excel.

Vi kan också läsa en textfil i VBA med hjälp av FileSystemObject. I koden nedan har vi använt sen bindning med filsystemobjektet. Du kan också skapa en referens till den i ditt VBA -projekt. Se här för mer information.

123456789101112131415 Sub ReadTextFile ()Dim strLine som strängDim FSO som objektDim TSO som objektAnge FSO = CreateObject ("Scripting.FileSystemObject")Ange TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Do While Not TSO.AtEndOfStreamstrLine = TSO.ReadLineActiveCell = strLineActiveCell.Offset (1, 0) .VäljSlingaTSO. StängAnge TSO = ingentingAnge FSO = ingentingAvsluta Sub

Vi kan skapa en lite mer komplicerad slinga om vi vill separera linjerna i celler av deras avgränsare. Här har vi använt tidig bindning i koden och deklarerat filsystemobjektet.

123456789101112131415161718192021222324 Sub ReadTextFileWithSeparators ()Dim StrLine som strängDim FSO som nytt filsystemsystemDim TSO som objektDim StrLineElements som variantDim Index så längeDim i As LongDim Avgränsare som strängAnge FSO = CreateObject ("Scripting.FileSystemObject")Ange TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Avgränsare = ","Index = 1Gör medan TSO.AtEndOfStream = FalsktStrLine = TSO.ReadLineStrLineElements = Dela (StrLine, avgränsare)För i = LBound (StrLineElements) Till UBound (StrLineElements)Celler (Index, i + 1) .Value = StrLineElements (i)Nästa iIndex = Index + 1SlingaTSO. StängAnge TSO = ingentingAnge FSO = ingentingAvsluta Sub

Detta leder till att raderna separeras i enskilda celler i Excel enligt grafiken nedan.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave