VBA - Tekstbestand regel voor regel lezen

Deze zelfstudie laat zien hoe u regel voor regel inhoud uit tekstbestanden kunt lezen met VBA.

We kunnen het tekstbestand als een heel bestand lezen, of regel voor regel.

Tekstbestand regel voor regel lezen

Tekst in een tekstbestand bestaat meestal uit meerdere regels, gescheiden door scheidingstekens. Dit kunnen een komma (“,”), een komma met een spatie (“, “), een puntkomma (“;”), een puntkomma met een spatie (“; “), een spatie (“ “), een tab (vbTab ) of in zeldzame gevallen een ander teken zoals een tilde (~). De regels worden normaal gescheiden door een regeleinde (vbCRLF).

De eenvoudigste manier om een ​​tekstbestand regel voor regel in ons werkblad in VBA te lezen, is door de eerste cel te selecteren waar we de tekst willen plaatsen en vervolgens de volgende code uit te voeren:

1234567891011 Sub ReadFile()Dim strFile As String, strLine As StringstrFile = "C:\Test\TestFile.txt"Open strFile voor invoer als #1Doen tot EOF(1)Lijningang #1, strLineActiveCell = strLineActiveCell.Offset(1, 0).SelecterenLusSluiten #1Einde sub

Hierdoor wordt elke regel van het tekstbestand in een enkele cel in Excel geplaatst.

We kunnen ook een tekstbestand in VBA lezen met behulp van het FileSystemObject. In de onderstaande code hebben we late binding gebruikt met het File System Object. U kunt er ook een verwijzing naar maken in uw VBA-project. Kijk hier voor meer informatie.

123456789101112131415 Sub ReadTextFile()Dim strLine As StringDim FSO als objectTSO dimmen als objectStel FSO = CreateObject ("Scripting.FileSystemObject") inStel TSO = FSO.OpenTextFile ("C:\Test\TestFile.txt") inDoen terwijl niet TSO.AtEndOfStreamstrLine = TSO.ReadLineActiveCell = strLineActiveCell.Offset(1, 0).SelecterenLusTSO.SluitenTSO instellen = nietsStel FSO = Niets inEinde sub

We kunnen een iets gecompliceerdere lus maken als we de lijnen in cellen willen scheiden door hun scheidingstekens. Hier hebben we vroege binding in de code gebruikt en het bestandssysteemobject gedeclareerd.

123456789101112131415161718192021222324 Sub ReadTextFileWithSeparators()Dim StrLine As StringDim FSO als nieuw bestandssysteemobjectTSO dimmen als objectDim StrLineElements As VariantDim Index zo langDim ik zo langDim scheidingsteken als tekenreeksStel FSO = CreateObject ("Scripting.FileSystemObject") inStel TSO = FSO.OpenTextFile ("C:\Test\TestFile.txt") inScheidingsteken = ","Index = 1Do While TSO.AtEndOfStream = FalseStrLine = TSO.ReadLineStrLineElements = Split (StrLine, scheidingsteken)Voor i = LBound(StrLineElements) Naar UBound(StrLineElements)Cellen (Index, i + 1). Waarde = StrLineElements (i)volgende iIndex = Index + 1LusTSO.SluitenTSO instellen = nietsStel FSO = Niets inEinde sub

Dit zal ertoe leiden dat de regels worden gescheiden in afzonderlijke cellen in Excel, zoals in de onderstaande afbeelding.

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave