VBA Læs tekstfil (læs, analyser og importer)

Denne vejledning viser, hvordan du læser indhold fra tekstfiler og indsætter det i regneark med VBA.

Læs tekstfilindhold i regneark

Den enkleste måde at læse en tekstfils indhold på er at kopiere den til et regnearks celle.

123456789101112 Sub FSOPasteTextFileContent ()Dim FSO som nyt filsystemsystemIndstil FSO = CreateObject ("Scripting.FileSystemObject")Indstil FileToRead = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForReading) 'tilføj her stien til din tekstfilTextString = FileToRead.ReadAllFileToRead.CloseThisWorkbook.Sheets (1) .Range ("A1"). Value = TextString 'du kan angive regnearket og cellen, hvor tekstfilens indhold skal indsættesAfslut Sub

Ovenstående kode bruger FileSystemObject. For at kunne bruge det skal du angive en reference til VB-scriptets kørebibliotek. Se her for mere information.

Uden at bruge FileSystemObject kan du indsætte din tekstfils indhold med nedenstående kode. Hvis din tekstfil indeholder linjeseparator, indsættes den linje for linje.

123456789101112 Sub PasteTextFileContent ()Dim wbExcel As Workbook, wbText As WorkbookDim wsExcel Som regnearkSet wbExcel = ThisWorkbook 'angiv her, hvilken Excel -fil tekstfilens indhold skal indsættes iIndstil wsExcel = wbExcel.Sheets (1) 'angiv her, hvilket regneark der skal brugesIndstil wbText = Workbooks.Open ("C: \ Test \ TestFile.txt") 'tilføj her stien til din tekstfilwbText.Sheets (1) .Celler.Kopier wsExcel.CellswbText.Close SaveChanges: = FalskAfslut Sub

Læs tekstfilindhold linje for linje, kolonne for kolonne

Din tekstfil kan have flere rækker og flere elementer angivet i rækkerne adskilt med komma, semikolon, fane, mellemrum osv … For at læse og indsætte tekstfilens indhold korrekt har du muligvis brug for denne kode herunder:

1234567891011121314151617181920212223242526 Sub PasteTextFileContentWithSeparators ()Dim StrLine som strengDim FSO som nyt filsystemsystemDim TSO som objektDim StrLineElements som variantDim indeks så længeDim i så længeDim Delimiter som strengIndstil FSO = CreateObject ("Scripting.FileSystemObject")Indstil TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Delimiter = "," 'den afgrænsning, der bruges i din tekstfilIndeks = 1Gør Mens TSO.AtEndOfStream = FalskStrLine = TSO.ReadLineStrLineElements = Split (StrLine, afgrænser)For i = LBound (StrLineElements) Til UBound (StrLineElements)Celler (indeks, i + 1) .Value = StrLineElements (i) 'denne kode begynder at indsætte tekstfilens indhold fra det aktive regnearks A1 (celle (1,1)) celleNæste iIndeks = Indeks + 1SløjfeTSO. LukAfslut Sub

Den afgrænsning, der bruges i din tekstfil, kan være komma (“,”), komma med mellemrum (“,“), semikolon (“;”), semikolon med mellemrum (“;“), mellemrum (““), fane (skift derefter Delimiter = vbTab) eller i sjældne tilfælde en anden karakter.

Læs tekstfiler i arrays

Hvis du har brug for at læse din tekstfils indhold i et array og indsætte linje for linje, kolonne for kolonne i dit regneark, skal du bruge denne kode herunder:

12345678910111213141516171819202122232425262728293031323334 Sub ReadDelimitedTextFileIntoArray ()Dim afgrænser som strengDim tekstfil som heltalDim FilePath som strengDim FileContent som strengDim LineArray () som strengDim DataArray () som strengDim TempArray () som strengDim rw As Long, col As LongDelimiter = vbTab 'den afgrænser, der bruges i din tekstfilFilePath = "C: \ Test \ TestFileTab.txt"rw = 1TextFile = FreeFileÅbn FilePath til input som tekstfilFileContent = Input (LOF (TextFile), TextFile)Luk tekstfilLineArray () = Opdel (FileContent, vbNewLine) 'ændre vbNewLine til vbCrLf eller vbLf afhængigt af linjeseparatoren, der bruges i din tekstfilFor x = LBound (LineArray) Til UBound (LineArray)If Len (Trim (LineArray (x))) 0 SåTempArray = Opdel (LineArray (x), afgrænser)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 kode begynder at indsætte tekstfilens indhold fra det aktive regnearks A1 (celle (1,1)) celleNæste yAfslut Hvisrw = rw + 1Næste xAfslut Sub

Linjeseparatorer i din tekstfil kan være vognretur og linefeed -kombination (Chr (13)+Chr (10)) eller linefeed (Chr (10)). Brug vbCrLf eller vbLf i overensstemmelse hermed. Hvis du ikke er sikker, skal du bruge vbNewLine til at angive linjeseparatoren.

wave wave wave wave wave