VBA - Číst textový soubor řádek po řádku

Tento tutoriál předvede, jak číst obsah z textových souborů řádek po řádku pomocí VBA.

Textový soubor můžeme číst buď jako celý soubor, nebo po řádcích.

Číst textový soubor řádek po řádku

Text v textovém souboru je obvykle tvořen několika řádky, oddělenými oddělovači. Může to být čárka („,“), čárka s mezerou („,“), středník („;“), středník s mezerou („;“), mezera („“), tabulátor (vbTab ) nebo ve vzácných případech jakýkoli jiný znak, jako je vlnovka (~). Řádky jsou obvykle odděleny zalomením řádku (vbCRLF).

Nejjednodušší způsob, jak číst textový soubor řádek po řádku do našeho listu ve VBA, je vybrat první buňku, kam chceme text umístit, a poté spustit následující kód:

1234567891011 Sub ReadFile ()Dim strFile jako řetězec, strLine jako řetězecstrFile = "C: \ Test \ TestFile.txt"Otevřete strFile pro vstup jako #1Do Do EOF (1)Line Input #1, strLineActiveCell = strLineActiveCell.Offset (1, 0). VyberteSmyčkaZavřít #1End Sub

Tím se každý řádek textového souboru umístí do jedné buňky v aplikaci Excel.

Můžeme také přečíst textový soubor ve VBA pomocí FileSystemObject. V níže uvedeném kódu jsme použili pozdní vazbu s objektem systému souborů. Můžete na něj také vytvořit odkaz ve svém projektu VBA. Další informace naleznete zde.

123456789101112131415 Sub ReadTextFile ()Dim strLine jako řetězecDim FSO jako objektDim TSO jako objektNastavit FSO = CreateObject ("Scripting.FileSystemObject")Nastavit TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Neprovádějte TSO.AtEndOfStreamstrLine = TSO.ReadLineActiveCell = strLineActiveCell.Offset (1, 0). VyberteSmyčkaTSO. ZavřítNastavit TSO = NicNastavit FSO = NicEnd Sub

Můžeme vytvořit trochu komplikovanější smyčku, pokud chceme oddělit řádky do buněk jejich oddělovači. Zde jsme použili ranou vazbu v kódu a deklarovali objekt systému souborů.

123456789101112131415161718192021222324 Sub ReadTextFileWithSeparators ()Dim StrLine jako řetězecDim FSO jako nový FileSystemObjectDim TSO jako objektDim StrLineElements As VariantDim Index jako dlouhýDim i As LongDim Delimiter As StringNastavit FSO = CreateObject ("Scripting.FileSystemObject")Nastavit TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Oddělovač = ","Index = 1Do While TSO.AtEndOfStream = FalseStrLine = TSO.ReadLineStrLineElements = Split (StrLine, Delimiter)For i = LBound (StrLineElements) To UBound (StrLineElements)Buňky (Index, i + 1). Hodnota = StrLineElements (i)Příště jáIndex = Index + 1SmyčkaTSO. ZavřítNastavit TSO = NicNastavit FSO = NicEnd Sub

Výsledkem bude rozdělení řádků do jednotlivých buněk v aplikaci Excel podle obrázku níže.

wave wave wave wave wave