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.