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.