VBA loetud tekstifail (lugemine, sõelumine ja import)

See õpetus näitab, kuidas lugeda tekstifailidest sisu ja kleepida see VBA abil töölehtedele.

Lugege tekstifaili sisu töölehele

Lihtsaim viis tekstifaili sisu lugemiseks on selle kopeerimine töölehe lahtrisse.

123456789101112 Alam FSOPasteTextFileContent ()Dim FSO uue failisüsteemi objektinaMäära FSO = CreateObject ("Scripting.FileSystemObject")Määra FileToRead = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForReading) 'lisa siia oma tekstifaili teeTextString = FileToRead.ReadAllFileToRead.ClosThisWorkbook.Sheets (1) .Range ("A1"). Value = TextString 'saate määrata töölehe ja lahtri, kuhu tekstifaili sisu kleepidaEnd Sub

Ülaltoodud kood kasutab FileSystemObject. Selle kasutamiseks peate määrama viite VB skripti käitusajale. Lisateavet leiate siit.

Ilma FileSystemObjecti kasutamata saate oma tekstifaili sisu kleepida alloleva koodiga. Kui teie tekstifail sisaldab ridade eraldajat, kleebitakse see ridade kaupa.

123456789101112 Sub PasteTextFileContent ()Dim wbExcel töövihikuna, wbText töövihikunaDim wsExcel töölehenaSet wbExcel = ThisWorkbook 'määrake siin, millisesse Exceli faili tekstifaili sisu kleepidaSet wsExcel = wbExcel.Sheets (1) 'määrake siin, millist töölehte kasutadaMäära wbText = Töövihikud. Ava ("C: \ Test \ TestFile.txt") 'lisa siia oma tekstifaili teewbText.Sheets (1). Lahtrid. Kopeeri wsExcel.CellswbText.Close SaveChanges: = ValeEnd Sub

Lugege tekstifaili sisu rida -realt, veerg -veerult

Teie tekstifailil võib olla mitu rida ja mitu elementi, mis on loetletud ridades, mis on eraldatud koma, semikooloniga, vahelehega, tühikuga jne … Tekstifaili sisu korrektseks lugemiseks ja kleepimiseks vajate seda koodi:

1234567891011121314151617181920212223242526 Sub PasteTextFileContentWithSeparators ()Dim StrLine stringinaDim FSO uue failisüsteemi objektinaDim TSO kui objektDim StrLineElements VariantPimendusindeks nii kauaDim i As LongStringina dimmerdajaMäära FSO = CreateObject ("Scripting.FileSystemObject")Määra TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Eraldaja = "," 'eraldaja, mida kasutatakse teie tekstifailisIndeks = 1Do while TSO.AtEndOfStream = ValeStrLine = TSO.ReadLineStrLineElements = Split (StrLine, eraldaja)I = LBound (StrLineElements) kuni UBound (StrLineElements)Lahtrid (indeks, i + 1). Väärtus = StrLineElements (i) 'see kood hakkab tekstifaili sisu kleepima aktiivse töölehe lahtrist A1 (lahter (1,1))Edasi iIndeks = indeks + 1LoopTSO. SuleEnd Sub

Eraldusmärk, mida teie tekstifailis kasutatakse, võib olla koma (“,”), koma tühikuga (“,“), semikoolon (“;”), semikoolon tühikuga (“;”), tühik (““), sakk (muuda siis eraldaja = vbTab) või harvadel juhtudel mõni muu märk.

Lugege tekstifailid massiividesse

Kui peate oma tekstifaili sisu massiiviks lugema ja kleepima oma töölehele rida -realt, veerghaaval, vajate seda koodi allpool:

12345678910111213141516171819202122232425262728293031323334 Sub ReadDelimitedTextFileIntoArray ()Dim eraldusmärk stringinaTuhmi tekstifail täisarvunaHämardage FilePath stringinaHämarda failisisu stringinaDim LineArray () stringinaDim DataArray () stringinaDim TempArray () stringinaDim rw As Long, col As LongEraldaja = vbTab 'eraldaja, mida kasutatakse teie tekstifailisFilePath = "C: \ Test \ TestFileTab.txt"rw = 1TextFile = FreeFileAvage FilePath tekstifailina sisestamiseksFileContent = Sisend (LOF (TextFile), TextFile)Sulgege TextFileLineArray () = Split (FileContent, vbNewLine) 'muutke vbNewLine väärtuseks vbCrLf või vbLf sõltuvalt tekstifailis kasutatavast reavahestX = LBound (LineArray) kuni UBound (LineArray)Kui Len (Kärbi (LineArray (x))) 0 SiisTempArray = Split (LineArray (x), eraldaja)col = UBound (TempArray)ReDim Preserve DataArray (kollane, rw)Y = LBound (TempArray) kuni UBound (TempArray)DataArray (y, rw) = TempArray (y)Lahtrid (x + 1, y + 1). Väärtus = DataArray (y, rw) 'see kood hakkab tekstifaili sisu kleepima aktiivse töölehe lahtrist A1 (lahter (1,1))Järgmine yLõpp Kuirw = rw + 1Järgmine xEnd Sub

Teie tekstifaili ridade eraldajad võivad olla käru tagasipöördumise ja reasöötmise kombinatsioon (Chr (13)+Chr (10)) või linefeed (Chr (10)). Kasutage vastavalt vbCrLf või vbLf. Kui te pole kindel, kasutage rea eraldaja näitamiseks vbNewLine.

wave wave wave wave wave