VBA olvasott szövegfájl (olvasás, elemzés és importálás)

Ez az oktatóanyag bemutatja, hogyan lehet szöveges fájlokból tartalmat olvasni és beilleszteni a munkalapokba a VBA segítségével.

Olvassa el a szöveges fájl tartalmát a munkalapon

A szöveges fájl tartalmának legegyszerűbb olvasási módja, ha azt egy munkalap cellájába másolja.

123456789101112 Sub FSOPasteTextFileContent ()Halvány FSO új fájlrendszer -objektumkéntFSO beállítása = CreateObject ("Scripting.FileSystemObject")Set FileToRead = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForReading) 'add ide a szöveges fájl elérési útjátTextString = FileToRead.ReadAllFileToRead.CloseThisWorkbook.Sheets (1) .Range ("A1"). Value = TextString 'megadhatja a munkalapot és a cellát, ahová beillesztheti a szöveges fájl tartalmátEnd Sub

A fenti kód a FileSystemObject objektumot használja. A használatához be kell állítania egy hivatkozást a VB script futásidejű könyvtárára. További információért lásd itt.

A FileSystemObject használata nélkül beillesztheti a szöveges fájl tartalmát az alábbi kóddal. Ha a szövegfájl sorleválasztót tartalmaz, akkor soronként beillesztésre kerül.

123456789101112 Sub PasteTextFileContent ()Dim wbExcel mint munkafüzet, wbText mint munkafüzetDim wsExcel munkalapkéntSet wbExcel = ThisWorkbook 'itt adja meg, hogy a szövegfájl tartalmát melyik Excel fájlba kell beilleszteniÁllítsa be a wsExcel = wbExcel.Sheets (1) 'itt adja meg a használni kívánt munkalapotSet wbText = Workbooks.Open ("C: \ Test \ TestFile.txt") 'add ide a szöveges fájl elérési útjátwbText.Sheets (1) .Cells.Cyy wsExcel.CellswbText.Close SaveChanges: = HamisEnd Sub

Olvassa el a szövegfájl tartalmát soronként, oszloponként

A szövegfájl több sorból és több elemből állhat, amelyek vesszővel, pontosvesszővel, tabulátorral, szóközzel stb. Vannak elválasztva. A szövegfájl tartalmának helyes olvasásához és beillesztéséhez szükség lehet az alábbi kódra:

1234567891011121314151617181920212223242526 Sub PasteTextFileContentWithSeparators ()Dim StrLine karakterlánckéntHalvány FSO új fájlrendszer -objektumkéntA TSO elhalványítása objektumkéntDim StrLineElements as VariantDim Index As LongDim i As LongHalvány határoló karakterlánckéntSet FSO = CreateObject ("Scripting.FileSystemObject")Állítsa be a TSO = FSO.OpenTextFile fájlt ("C: \ Test \ TestFile.txt")Elválasztó = "," 'a szövegfájlban használt határolóIndex = 1Do while TSO.AtEndOfStream = HamisStrLine = TSO.ReadLineStrLineElements = Osztott (StrLine, elválasztó)For i = LBound (StrLineElements) to UBound (StrLineElements)Cellak (Index, i + 1). Value = StrLineElements (i) 'ez a kód elkezdi beilleszteni a szöveges fájl tartalmát az aktív munkalap A1 (Cell (1,1)) cellájábólKövetkező iIndex = Index + 1HurokTSO. Zárja beEnd Sub

A szövegfájlban használt elválasztó lehet vessző („,”), vessző szóközzel („,“), pontosvessző („;”), pontosvessző szóközzel („;”), szóköz („“), tabulátor (módosítsa, majd elválasztó = vbTab) vagy ritka esetekben bármely más karakter.

Olvasson szöveges fájlokat tömbökbe

Ha a szöveges fájl tartalmát tömbbe kell olvasnia, és soronként, oszloponként kell beillesztenie a munkalapra, akkor szüksége lesz erre a kódra:

12345678910111213141516171819202122232425262728293031323334 Sub ReadDelimitedTextFileIntoArray ()Halvány határoló karakterlánckéntHalvány szövegfájl egész számkéntFájlpálya halványítása karakterlánckéntFájltartalom halványítása karakterlánckéntDim LineArray () karakterlánckéntDim DataArray () karakterlánckéntDim TempArray () karakterlánckéntDim rw As Long, col As LongElválasztó = vbTab 'a szövegfájlban használt határolóFilePath = "C: \ Test \ TestFileTab.txt"rw = 1TextFile = FreeFileNyissa meg a FilePath -t szövegfájlként történő bevitelhezFileContent = Bemenet (LOF (TextFile), TextFile)Zárja be a TextFile fájltLineArray () = Split (FileContent, vbNewLine) 'módosítsa a vbNewLine -t vbCrLf -re vagy vbLf -re a szövegfájlban használt sorleválasztótól függőenX = LBound (LineArray) - UBound (LineArray) eseténHa Len (Vágás (LineArray (x))) 0 AkkorTempArray = Osztott (LineArray (x), elválasztó)col = UBound (TempArray)ReDim Preserve DataArray (col, rw)Y = LBound (TempArray) - UBound (TempArray) eseténDataArray (y, rw) = TempArray (y)Cellak (x + 1, y + 1). Value = DataArray (y, rw) 'ez a kód elkezdi beilleszteni a szöveges fájl tartalmát az aktív munkalap A1 (Cell (1,1)) cellájábólKövetkező yVége Harw = rw + 1Következő xEnd Sub

A szövegfájlban a sorválasztók lehetnek kocsivissza és sorbevitel kombináció (Chr (13)+Chr (10)) vagy sorbevitel (Chr (10)). Ennek megfelelően használja a vbCrLf vagy a vbLf fájlt. Ha nem biztos benne, használja a vbNewLine parancsot a sorválasztó jelzésére.

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave