Tento tutoriál ukáže, ako čítať obsah z textových súborov a vkladať ho do pracovných hárkov pomocou VBA.
Prečítajte si obsah textového súboru do pracovného hárka
Najjednoduchším spôsobom, ako čítať obsah textového súboru, je skopírovať ho do bunky pracovného hárka.
123456789101112 | Sub FSOPasteTextFileContent ()Dim FSO ako nový FileSystemObjectNastaviť FSO = CreateObject ("Scripting.FileSystemObject")Nastaviť FileToRead = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForReading) 'sem pridajte cestu k textovému súboruTextString = FileToRead.ReadAllFileToRead.CloseThisWorkbook.Sheets (1) .Range ("A1"). Hodnota = TextString 'môžete určiť pracovný hárok a bunku, kam sa má vložiť obsah textového súboru.Koniec pod |
Vyššie uvedený kód používa FileSystemObject. Aby ste ho mohli používať, budete musieť nastaviť odkaz na run-time knižnicu VB skriptov. Ďalšie informácie nájdete tu.
Bez použitia programu FileSystemObject môžete prilepiť obsah svojho textového súboru pomocou nižšie uvedeného kódu. Ak váš textový súbor obsahuje oddeľovač riadkov, bude prilepený riadok po riadku.
123456789101112 | Sub PasteTextFileContent ()Dim wbExcel ako zošit, wbText ako zošitDim wsExcel As pracovný listNastaviť wbExcel = ThisWorkbook 'tu zadajte, do ktorého súboru programu Excel sa má vložiť obsah textového súboruNastaviť wsExcel = wbExcel.Sheets (1) 'tu zadajte, ktorý pracovný hárok sa má použiťNastaviť wbText = zošity. Otvorte ("C: \ Test \ TestFile.txt") 'sem pridajte cestu k textovému súboruwbText.Sheets (1) .Cells.Copy wsExcel.CellswbText.Close SaveChanges: = FalseKoniec pod |
Čítajte obsah textového súboru riadok po riadku, stĺpček po stĺpci
Váš textový súbor môže mať niekoľko riadkov a niekoľko prvkov uvedených v riadkoch oddelených čiarkou, bodkočiarkou, tabulátorom, medzerou atď. … Na správne čítanie a vloženie obsahu textového súboru budete možno potrebovať nasledujúci kód:
1234567891011121314151617181920212223242526 | Sub PasteTextFileContentWithSeparators ()Dim StrLine ako reťazecDim FSO ako nový FileSystemObjectDim TSO ako objektDim StrLineElements Ako variantDim Index ako dlhýDim i As LongDim Delimiter ako reťazecNastaviť FSO = CreateObject ("Scripting.FileSystemObject")Nastaviť TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Delimiter = "," 'oddeľovač, ktorý sa používa vo vašom textovom súboreIndex = 1Robiť pri TSO.AtEndOfStream = FalseStrLine = TSO.ReadLineStrLineElements = Split (StrLine, Delimiter)Pre i = LBound (StrLineElements) až UBound (StrLineElements)Bunky (Index, i + 1). Hodnota = StrLineElements (i) „tento kód začne vkladať obsah textového súboru z bunky A1 (bunka (1,1)) aktívneho pracovného hárkaĎalej iIndex = Index + 1SlučkaTSO.ZavrieťKoniec pod |
Oddeľovač, ktorý sa používa vo vašom textovom súbore, môže byť čiarka („,“), čiarka s medzerou („,“), bodkočiarka („;“), bodkočiarka s medzerou („;“), medzera („“), tabulátor (potom zmeniť Delimiter = vbTab) alebo v zriedkavých prípadoch akýkoľvek iný znak.
Čítajte textové súbory do polí
Ak potrebujete prečítať obsah svojho textového súboru do poľa a vloženie je do hárka riadok po riadku, stĺpček po stĺpci, budete potrebovať nasledujúci kód:
12345678910111213141516171819202122232425262728293031323334 | Podradené čítanieDelimitedTextFileIntoArray ()Dim Delimiter As StringDim TextFile ako celé čísloDim FilePath ako reťazecDim FileContent as StringDim LineArray () ako reťazecDim DataArray () ako reťazecDim TempArray () ako reťazecDim rw As Long, col As LongDelimiter = vbTab 'oddeľovač, ktorý sa používa vo vašom textovom súboreFilePath = "C: \ Test \ TestFileTab.txt"rw = 1TextFile = FreeFileOtvorte FilePath pre vstup ako textový súborFileContent = Input (LOF (TextFile), TextFile)Zatvorte textový súborLineArray () = Rozdeliť (FileContent, vbNewLine) 'zmena vbNewLine na vbCrLf alebo vbLf v závislosti od oddeľovača riadkov, ktorý sa používa vo vašom textovom súborePre x = LBound (LineArray) Na UBound (LineArray)Ak 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)Bunky (x + 1, y + 1). Hodnota = DataArray (y, rw) „tento kód začne vkladať obsah textového súboru z bunky A1 (bunka (1,1)) aktívneho pracovného hárkaĎalšie yKoniec Akrw = rw + 1Dalej xKoniec pod |
Oddeľovače riadkov vo vašom textovom súbore môžu byť kombináciou návratu vozíka a riadkového podávania (Chr (13)+Chr (10)) alebo riadkového podávania (Chr (10)). Podľa toho použite vbCrLf alebo vbLf. Ak si nie ste istí, na označenie oddeľovača riadkov použite vbNewLine.