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.