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.