Denna handledning visar hur du läser innehåll från textfiler och klistrar in det i kalkylblad med VBA.
Läs textfilinnehåll i kalkylblad
Det enklaste sättet att läsa en textfils innehåll är att kopiera den till ett kalkylbladets cell.
123456789101112 | Sub FSOPasteTextFileContent ()Dim FSO som nytt filsystemsystemAnge FSO = CreateObject ("Scripting.FileSystemObject")Ställ in FileToRead = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForReading) 'lägg till sökvägen till din textfil härTextString = FileToRead.ReadAllFileToRead.CloseThisWorkbook.Sheets (1) .Range ("A1"). Value = TextString 'du kan ange kalkylbladet och cellen där textfilens innehåll ska klistras inAvsluta Sub |
Ovanstående kod använder FileSystemObject. För att kunna använda det måste du ange en referens till VB-skriptets körtidsbibliotek. Se här för mer information.
Utan att använda FileSystemObject kan du klistra in textfilens innehåll med koden nedan. Om din textfil innehåller radavskiljare klistras den in rad för rad.
123456789101112 | Sub PasteTextFileContent ()Dim wbExcel As Workbook, wbText As WorkbookDim wsExcel som arbetsbladSet wbExcel = ThisWorkbook 'ange här vilken Excel -fil textfilens innehåll ska klistras in iAnge wsExcel = wbExcel.Sheets (1) 'ange här vilket kalkylblad som ska användasStäll in wbText = Workbooks.Open ("C: \ Test \ TestFile.txt") "lägg till sökvägen till din textfil härwbText.Sheets (1) .Celler.Kopiera wsExcel.CellswbText.Close SaveChanges: = FalsktAvsluta Sub |
Läs textfilinnehåll rad för rad, kolumn för kolumn
Din textfil kan ha flera rader och flera element listade i raderna separerade med kommatecken, semikolon, flik, mellanslag osv … För att läsa och klistra in textfilens innehåll korrekt kan du behöva den här koden nedan:
1234567891011121314151617181920212223242526 | Sub PasteTextFileContentWithSeparators ()Dim StrLine som strängDim FSO som nytt filsystemsystemDim TSO som objektDim StrLineElements som variantDim Index så längeDim i As LongDim Avgränsare som strängAnge FSO = CreateObject ("Scripting.FileSystemObject")Ange TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Delimiter = "," 'avgränsaren som används i din textfilIndex = 1Gör medan TSO.AtEndOfStream = FalsktStrLine = TSO.ReadLineStrLineElements = Dela (StrLine, avgränsare)För i = LBound (StrLineElements) Till UBound (StrLineElements)Celler (Index, i + 1) .Value = StrLineElements (i) 'den här koden börjar klistra in textfilens innehåll från det aktiva kalkylbladets A1 (cell (1,1)) cellNästa iIndex = Index + 1SlingaTSO. StängAvsluta Sub |
Avgränsaren som används i din textfil kan vara komma (","), komma med mellanslag (","), semikolon (";"), semikolon med mellanslag (";"), mellanslag (""), flik) (ändra sedan Avgränsare = vbTab) eller i sällsynta fall någon annan karaktär.
Läs textfiler i matriser
Om du behöver läsa textfilens innehåll i en matris och klistra in rad för rad, kolumn för kolumn i ditt kalkylblad, behöver du den här koden nedan:
12345678910111213141516171819202122232425262728293031323334 | Sub ReadDelimitedTextFileIntoArray ()Dim Avgränsare som strängDim TextFile som heltalDim FilePath som strängDim FileContent som strängDim LineArray () som strängDim DataArray () som strängDim TempArray () som strängDim rw As Long, col As LongDelimiter = vbTab 'avgränsaren som används i din textfilFilePath = "C: \ Test \ TestFileTab.txt"rw = 1TextFile = FreeFileÖppna FilePath för inmatning som textfilFileContent = Inmatning (LOF (TextFile), TextFile)Stäng TextFileLineArray () = Dela (FileContent, vbNewLine) 'ändra vbNewLine till vbCrLf eller vbLf beroende på radavgränsaren som används i din textfilFör x = LBound (LineArray) Till UBound (LineArray)If Len (Trim (LineArray (x))) 0 DåTempArray = Dela (LineArray (x), avgränsare)col = UBound (TempArray)ReDim Preserve DataArray (col, rw)För y = LBound (TempArray) Till UBound (TempArray)DataArray (y, rw) = TempArray (y)Celler (x + 1, y + 1) .Value = DataArray (y, rw) 'den här koden börjar klistra in textfilens innehåll från det aktiva kalkylbladets A1 (cell (1,1)) cellNästa yAvsluta omrw = rw + 1Nästa xAvsluta Sub |
Radavgränsare i din textfil kan vara vagnretur och linjefoderkombination (Chr (13)+Chr (10)) eller linefeed (Chr (10)). Använd vbCrLf eller vbLf. Om du inte är säker, använd vbNewLine för att ange linjeseparatorn.