Číst textový soubor VBA (číst, analyzovat a importovat)

Tento tutoriál předvede, jak číst obsah z textových souborů a vkládat jej do listů pomocí VBA.

Číst obsah textového souboru do pracovního listu

Nejjednodušší způsob, jak číst obsah textového souboru, je zkopírovat ho do buňky listu.

123456789101112 Dílčí FSOPasteTextFileContent ()Dim FSO jako nový FileSystemObjectNastavit FSO = CreateObject ("Scripting.FileSystemObject")Nastavit FileToRead = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForReading) 'sem přidat cestu k vašemu textovému souboruTextString = FileToRead.ReadAllFileToRead.CloseThisWorkbook.Sheets (1) .Range ("A1"). Value = TextString 'můžete určit list a buňku, kam se má vložit obsah textového souboruEnd Sub

Výše uvedený kód používá FileSystemObject. Abyste jej mohli používat, budete muset nastavit odkaz na knihovnu run-time skriptu VB. Další informace naleznete zde.

Bez použití FileSystemObject můžete obsah svého textového souboru vložit pomocí níže uvedeného kódu. Pokud váš textový soubor obsahuje oddělovač řádků, bude vložen řádek po řádku.

123456789101112 Sub PasteTextFileContent ()Dim wbExcel jako sešit, wbText jako sešitDim wsExcel As WorksheetNastavit wbExcel = ThisWorkbook 'zde zadejte, do kterého souboru aplikace Excel má být vložen obsah textového souboruNastavit wsExcel = wbExcel.Sheets (1) 'zde zadejte, který list použítNastavit wbText = Workbooks.Open ("C: \ Test \ TestFile.txt") 'sem přidat cestu k vašemu textovému souboruwbText.Sheets (1) .Cells.Copy wsExcel.CellswbText.Close SaveChanges: = FalseEnd Sub

Číst obsah textového souboru řádek po řádku, sloupec po sloupci

Váš textový soubor může mít několik řádků a několik prvků uvedených v řádcích oddělených čárkou, středníkem, tabulátorem, mezerou atd. … Abyste mohli správně číst a vkládat obsah textového souboru, možná budete potřebovat následující kód:

1234567891011121314151617181920212223242526 Sub PasteTextFileContentWithSeparators ()Dim StrLine jako řetězecDim FSO jako nový FileSystemObjectDim TSO jako objektDim StrLineElements As VariantDim Index jako dlouhýDim i As LongDim Delimiter jako řetězecNastavit FSO = CreateObject ("Scripting.FileSystemObject")Nastavit TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Delimiter = "," 'oddělovač, který je použit ve vašem textovém souboruIndex = 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) 'tento kód začne vkládat obsah textového souboru z buňky A1 (buňka (1,1)) aktivního listuPříště jáIndex = Index + 1SmyčkaTSO. ZavřítEnd Sub

Oddělovač použitý v textovém souboru může být čárka („,“), čárka s mezerou („,“), středník („;“), středník s mezerou („;“), mezera („“), tabulátor (změnit pak Oddělovač = vbTab) nebo ve výjimečných případech jakýkoli jiný znak.

Číst textové soubory do polí

Pokud potřebujete načíst obsah textového souboru do pole a vložit je řádek po řádku, sloupec po sloupci do listu, budete potřebovat tento kód níže:

12345678910111213141516171819202122232425262728293031323334 Dílčí čteníDelimitedTextFileIntoArray ()Dim Delimiter As StringDim TextFile jako celé čísloDim FilePath jako řetězecDim FileContent as StringDim LineArray () jako řetězecDim DataArray () jako řetězecDim TempArray () jako řetězecDim rw As Long, col As LongDelimiter = vbTab 'oddělovač, který je použit ve vašem textovém souboruFilePath = "C: \ Test \ TestFileTab.txt"rw = 1TextFile = FreeFileOtevřete FilePath pro vstup jako textový souborFileContent = Input (LOF (TextFile), TextFile)Zavřete TextFileLineArray () = Rozdělit (FileContent, vbNewLine) 'změnit vbNewLine na vbCrLf nebo vbLf v závislosti na oddělovači řádků, který je použit v textovém souboruPro x = LBound (LineArray) To UBound (LineArray)Pokud Len (Trim (LineArray (x))) 0 ThenTempArray = Split (LineArray (x), Delimiter)col = UBound (TempArray)ReDim Preserve DataArray (col, rw)For y = LBound (TempArray) To UBound (TempArray)DataArray (y, rw) = TempArray (y)Buňky (x + 1, y + 1). Hodnota = DataArray (y, rw) 'tento kód začne vkládat obsah textového souboru z buňky A1 (buňka (1,1)) aktivního listuDalší yKonec Ifrw = rw + 1Další xEnd Sub

Oddělovače řádků v textovém souboru mohou být kombinací návratu na začátek řádku a posunu řádku (Chr (13)+Chr (10)) nebo linefeed (Chr (10)). Podle toho použijte vbCrLf nebo vbLf. Pokud si nejste jisti, použijte k označení oddělovače řádků vbNewLine.

wave wave wave wave wave