Fișier text citit VBA (citire, analiză și importare)

Acest tutorial va arăta cum să citiți conținut din fișiere text și să-l inserați în foi de lucru cu VBA.

Citiți conținutul fișierului text în foaia de lucru

Cel mai simplu mod de a citi conținutul unui fișier text este copierea acestuia în celula unei foi de lucru.

123456789101112 Sub FSOPasteTextFileContent ()Dim FSO ca nou FileSystemObjectSetați FSO = CreateObject ("Scripting.FileSystemObject")Set FileToRead = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForReading) 'adăugați aici calea fișierului dvs. textTextString = FileToRead.ReadAllFileToRead.CloseThisWorkbook.Sheets (1) .Range ("A1"). Value = TextString 'puteți specifica foaia de lucru și celula unde să lipiți conținutul fișierului textSfârșitul Sub

Codul de mai sus folosește FileSystemObject. Pentru a-l utiliza, va trebui să setați o referință la biblioteca de execuție a scriptului VB. Vedeți aici pentru mai multe informații.

Fără a utiliza FileSystemObject puteți lipi conținutul fișierului text cu codul de mai jos. Dacă fișierul text conține separator de linie, acesta va fi lipit rând cu rând.

123456789101112 Sub PasteTextFileContent ()Dim wbExcel As Workbook, wbText As WorkbookDim wsExcel Ca foaie de lucruSet wbExcel = ThisWorkbook 'specifică aici în ce fișier Excel conținutul fișierului text trebuie lipitSetați wsExcel = wbExcel.Sheets (1) 'specificați aici ce foaie de lucru să utilizațiSet wbText = Workbooks.Open ("C: \ Test \ TestFile.txt") 'adăugați aici calea fișierului dvs. textwbText.Sheets (1) .Cells.Copy wsExcel.CellswbText.Close SaveChanges: = FalseSfârșitul Sub

Citiți conținutul fișierului text rând cu rând, coloană cu coloană

Fișierul dvs. text poate avea mai multe rânduri și mai multe elemente listate în rândurile separate prin virgulă, punct și virgulă, filă, spațiu etc. Pentru a citi și lipi corect conținutul fișierului text, este posibil să aveți nevoie de acest cod mai jos:

1234567891011121314151617181920212223242526 Sub PasteTextFileContentWithSeparators ()Dim StrLine Ca șirDim FSO ca nou FileSystemObjectDim TSO ca obiectDim StrLineElements as VariantReduceți indicele atât de multDim i As LongDim Delimiter ca ȘirSetați FSO = CreateObject ("Scripting.FileSystemObject")Setați TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Delimitator = "," 'delimitatorul care este utilizat în fișierul dvs. textIndex = 1Do While TSO.AtEndOfStream = FalseStrLine = TSO.ReadLineStrLineElements = Split (StrLine, Delimiter)Pentru i = LBound (StrLineElements) To UBound (StrLineElements)Celule (Index, i + 1) .Value = StrLineElements (i) 'acest cod va începe să lipească conținutul fișierului text din celula A1 (Celula (1,1)) a foii de lucru activeApoi euIndex = Index + 1BuclăTSO.ÎnchideSfârșitul Sub

Delimitatorul utilizat în fișierul text poate fi virgulă („,”), virgulă cu spațiu („,„), punct și virgulă („;”), punct și virgulă cu spațiu („;„), spațiu („„), filă (schimbați apoi Delimitator = vbTab) sau, în cazuri rare, orice alt caracter.

Citiți fișiere text în matrice

Dacă trebuie să citiți conținutul fișierului text într-o matrice și să lipiți rând cu rând, coloană cu coloană în foaia de lucru, veți avea nevoie de acest cod mai jos:

12345678910111213141516171819202122232425262728293031323334 Sub ReadDelimitedTextFileIntoArray ()Dim Delimiter Ca ȘirDim TextFile Ca întregDim FilePath Ca șirAtenuați conținutul fișierului ca șirDim LineArray () Ca șirDim DataArray () Ca șirDim TempArray () Ca șirDim rw As Long, col As LongDelimitator = vbTab 'delimitatorul care este utilizat în fișierul dvs. textFilePath = "C: \ Test \ TestFileTab.txt"rw = 1TextFile = FreeFileDeschideți FilePath pentru introducere ca fișier textFileContent = Input (LOF (TextFile), TextFile)Închideți TextFileLineArray () = Split (FileContent, vbNewLine) 'schimbați vbNewLine în vbCrLf sau vbLf în funcție de separatorul de linie care este utilizat în fișierul textPentru x = LBound (LineArray) To UBound (LineArray)Dacă Len (Trim (LineArray (x))) 0 AtunciTempArray = Split (LineArray (x), Delimiter)col = UBound (TempArray)ReDim Preserve DataArray (col, rw)Pentru y = LBound (TempArray) To UBound (TempArray)DataArray (y, rw) = TempArray (y)Celule (x + 1, y + 1). Valoare = DataArray (y, rw) "acest cod va începe să lipească conținutul fișierului text din celula A1 (celulă (1,1)) a foii de lucru activeUrmătorul yEnd Ifrw = rw + 1Următorul xSfârșitul Sub

Separatoarele de linie din fișierul text pot fi o combinație de retur de transport și linie (Chr (13) + Chr (10)) sau linie (Chr (10)). Utilizați vbCrLf sau vbLf, în consecință. Dacă nu sunteți sigur, utilizați vbNewLine pentru a indica separatorul de linie.

wave wave wave wave wave