Ta vadnica bo pokazala, kako prebrati vsebino iz besedilnih datotek in jo prilepiti na delovne liste z VBA.
Vsebino besedilne datoteke preberite na delovnem listu
Najpreprostejši način branja vsebine besedilne datoteke je kopiranje v celico delovnega lista.
123456789101112 | Sub FSOPasteTextFileContent ()Zatemni FSO kot nov datotečni sistemObjektNastavite FSO = CreateObject ("Scripting.FileSystemObject")Set FileToRead = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForReading) 'tukaj dodajte pot svoje besedilne datotekeTextString = FileToRead.ReadAllFileToRead.CloseThisWorkbook.Sheets (1) .Range ("A1"). Value = TextString 'lahko določite delovni list in celico, kamor prilepite vsebino besedilne datotekeEnd Sub |
Zgornja koda uporablja FileSystemObject. Če ga želite uporabiti, morate nastaviti sklic na knjižnico časa izvajanja skripta VB. Za več informacij glejte tukaj.
Brez uporabe FileSystemObject lahko vsebino besedilne datoteke prilepite s spodnjo kodo. Če vaša besedilna datoteka vsebuje ločevalnik vrstic, bo prilepljena vrstica za vrstico.
123456789101112 | Sub PasteTextFileContent ()Zatemni wbExcel kot delovni zvezek, wbText kot delovni zvezekZatemni wsExcel kot delovni listSet wbExcel = ThisWorkbook 'tukaj določite, v katero datoteko Excel je treba prilepiti vsebino besedilne datotekeSet wsExcel = wbExcel.Sheets (1) 'tukaj določite, kateri delovni list želite uporabitiSet wbText = Workbooks.Open ("C: \ Test \ TestFile.txt") 'tukaj dodajte pot vaše besedilne datotekewbText.Sheets (1) .Cells.Copy wsExcel.CellswbText.Close SaveChanges: = FalseEnd Sub |
Branje vsebine besedilne datoteke po vrsticah, po stolpcih po stolpcih
Vaša besedilna datoteka ima lahko več vrstic in več elementov, navedenih v vrsticah, ločenih z vejico, podpičjem, zavihkom, presledkom itd … Če želite pravilno prebrati in prilepiti vsebino besedilne datoteke, boste morda potrebovali spodnjo kodo:
1234567891011121314151617181920212223242526 | Sub PasteTextFileContentWithSeparators ()Dim StrLine As StringZatemni FSO kot nov datotečni sistemObjektZatemni TSO kot objektDim StrLineElements kot variantaZatemni indeks tako dolgoDim i As LongDim Delimiter kot nizNastavite FSO = CreateObject ("Scripting.FileSystemObject")Nastavite TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Delimiter = "," 'ločilo, ki se uporablja v besedilni datotekiIndeks = 1Naredi TSO.AtEndOfStream = FalseStrLine = TSO.ReadLineStrLineElements = Razdeljeno (StrLine, Delimiter)Za i = LBound (StrLineElements) Za UBound (StrLineElements)Celice (Indeks, i + 1). Vrednost = StrLineElements (i) 'bo ta koda začela lepiti vsebino besedilne datoteke iz celice A1 (celica (1,1)) aktivnega delovnega listaNaprej iIndeks = Indeks + 1ZankaTSO.ZapriEnd Sub |
Ločilo, ki se uporablja v besedilni datoteki, je lahko vejica (“,”), vejica s presledkom (“,“), podpičje (“;”), podpičje s presledkom (“;“), presledek (““), zavihek (spremenite nato Delimiter = vbTab) ali v redkih primerih kateri koli drug znak.
Berete besedilne datoteke v matrike
Če morate vsebino svoje besedilne datoteke prebrati v matriko in prilepite vrstico za vrstico, stolpec za stolpec na svoj delovni list, boste spodaj potrebovali to kodo:
12345678910111213141516171819202122232425262728293031323334 | Sub ReadDelimitedTextFileIntoArray ()Dim Delimiter As StringZatemni besedilno datoteko kot celo številoZatemni datotečno pot kot nizZatemni datotečno vsebino kot nizDim LineArray () kot nizZatemni DataArray () kot nizZatemni TempArray () kot nizDim rw As Long, col As LongDelimiter = vbTab 'ločilo, ki se uporablja v vaši besedilni datotekiFilePath = "C: \ Test \ TestFileTab.txt"rw = 1TextFile = FreeFileOdprite FilePath za vnos kot besedilno datotekoFileContent = Vnos (LOF (TextFile), TextFile)Zaprite datoteko TextFileLineArray () = Razdeli (FileContent, vbNewLine) 'spremenite vbNewLine v vbCrLf ali vbLf, odvisno od ločevalnika vrstic, ki se uporablja v vaši besedilni datotekiZa x = LBound (LineArray) Za UBound (LineArray)Če Len (Trim (LineArray (x))) 0 PotemTempArray = Razdeljeno (LineArray (x), Delimiter)col = UBound (TempArray)ReDim Preserve DataArray (stolpec, rw)Za y = LBound (TempArray) do UBound (TempArray)DataArray (y, rw) = TempArray (y)Celice (x + 1, y + 1). Vrednost = DataArray (y, rw) 'ta koda bo začela lepiti vsebino besedilne datoteke iz celice A1 (celica (1,1)) aktivnega delovnega listaNaslednji yKonec Čerw = rw + 1Naslednji xEnd Sub |
Ločila vrstic v vaši besedilni datoteki sta lahko kombinacija vrnitve nosilca in podajanja vrstice (Chr (13)+Chr (10)) ali podajanje vrstic (Chr (10)). V skladu s tem uporabite vbCrLf ali vbLf. Če niste prepričani, uporabite vbNewLine za označevanje ločevalnika vrstic.