VBA Les tekstfil (Les, analyser og importer)

Denne opplæringen vil demonstrere hvordan du leser innhold fra tekstfiler og limer det inn i regneark med VBA.

Les tekstfilinnhold i regnearket

Den enkleste måten å lese innholdet på en tekstfil er å kopiere den til et regnearks celle.

123456789101112 Sub FSOPasteTextFileContent ()Dim FSO som nytt filsystemobjektSett FSO = CreateObject ("Scripting.FileSystemObject")Sett FileToRead = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForReading) 'legg til banen til tekstfilen herTextString = FileToRead.ReadAllFileToRead.CloseThisWorkbook.Sheets (1) .Range ("A1"). Value = TextString 'du kan spesifisere regnearket og cellen hvor tekstfilens innhold skal limes innSlutt Sub

Koden ovenfor bruker FileSystemObject. For å bruke det, må du angi en referanse til VB-skriptets kjøretidsbibliotek. Se her for mer informasjon.

Uten å bruke FileSystemObject kan du lime inn tekstfilens innhold med koden nedenfor. Hvis tekstfilen din inneholder linjeseparator, limes den linje for linje.

123456789101112 Sub PasteTextFileContent ()Dim wbExcel As Workbook, wbText As WorkbookDim wsExcel Som regnearkSett wbExcel = ThisWorkbook 'spesifiser her hvilken Excel -fil tekstfilens innhold skal limes inn iSett wsExcel = wbExcel.Sheets (1) 'spesifiser her hvilket regneark du vil brukeSett wbText = Workbooks.Open ("C: \ Test \ TestFile.txt") 'legg til banen til tekstfilen din herwbText.Sheets (1) .Cells.Copy wsExcel.CellswbText.Close SaveChanges: = FalseSlutt Sub

Les tekstfilinnhold Linje for linje, kolonne for kolonne

Tekstfilen din kan ha flere rader og flere elementer oppført i radene atskilt med komma, semikolon, tabulator, mellomrom osv … For å lese og lime inn tekstfilens innhold riktig, trenger du kanskje denne koden nedenfor:

1234567891011121314151617181920212223242526 Sub PasteTextFileContentWithSeparators ()Dim StrLine som strengDim FSO som nytt filsystemobjektDim TSO som objektDim StrLineElements som variantDim Index så lengeDim i As LongDim Delimiter som strengSett FSO = CreateObject ("Scripting.FileSystemObject")Sett TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Delimiter = "," 'skilletegnet som brukes i tekstfilenIndeks = 1Gjør mens TSO.AtEndOfStream = FalseStrLine = TSO.ReadLineStrLineElements = Split (StrLine, skilletegn)For i = LBound (StrLineElements) Til UBound (StrLineElements)Celler (Index, i + 1) .Value = StrLineElements (i) 'denne koden begynner å lime inn tekstfilens innhold fra det aktive regnearkets A1 (celle (1,1)) -celleNeste jegIndeks = Indeks + 1LøkkeTSO. LukkSlutt Sub

Skilletegnet som brukes i tekstfilen kan være komma (“,”), komma med mellomrom (“,“), semikolon (“;”), semikolon med mellomrom (“;“), mellomrom (““), tabulator (endre deretter Delimiter = vbTab) eller i sjeldne tilfeller andre tegn.

Les tekstfiler i matriser

Hvis du trenger å lese tekstfilens innhold i en matrise og lime inn linje for linje, kolonne for kolonne i regnearket, trenger du denne koden nedenfor:

12345678910111213141516171819202122232425262728293031323334 Sub ReadDelimitedTextFileIntoArray ()Dim skilletegn som strengDim TextFile As IntegerDim FilePath som strengDim FileContent As StringDim LineArray () Som strengDim DataArray () som strengDim TempArray () Som strengDim rw As Long, col As LongDelimiter = vbTab 'skilletegnet som brukes i tekstfilenFilePath = "C: \ Test \ TestFileTab.txt"rw = 1TextFile = FreeFileÅpne FilePath For Input As TextFileFileContent = Input (LOF (TextFile), TextFile)Lukk TextFileLineArray () = Split (FileContent, vbNewLine) 'endre vbNewLine til vbCrLf eller vbLf avhengig av linjeseparatoren som brukes i tekstfilenFor x = LBound (LineArray) Til UBound (LineArray)If Len (Trim (LineArray (x))) 0 DaTempArray = Split (LineArray (x), skilletegn)col = UBound (TempArray)ReDim Preserve DataArray (col, rw)For y = LBound (TempArray) Til UBound (TempArray)DataArray (y, rw) = TempArray (y)Celler (x + 1, y + 1) .Value = DataArray (y, rw) 'denne koden begynner å lime inn tekstfilens innhold fra det aktive regnearkets A1 (celle (1,1)) celleNeste ySlutt omrw = rw + 1Neste xSlutt Sub

Linjeseparatorer i tekstfilen kan være vognretur og linefôrkombinasjon (Chr (13)+Chr (10)) eller linefeed (Chr (10)). Bruk derfor vbCrLf eller vbLf. Hvis du ikke er sikker, kan du bruke vbNewLine for å angi linjeseparatoren.

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave