Ši pamoka parodys, kaip skaityti turinį iš teksto failų ir įklijuoti jį į darbalapius naudojant VBA.
Skaitykite teksto failo turinį į darbalapį
Paprasčiausias būdas skaityti teksto failo turinį yra nukopijuoti jį į darbalapio langelį.
123456789101112 | Sub FSOPasteTextFileContent ()Pritemdyti FSO kaip naują „FileSystemObject“Nustatykite FSO = CreateObject ("Scripting.FileSystemObject")Nustatykite FileToRead = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForReading) "pridėkite čia savo teksto failo keliąTextString = FileToRead.ReadAllFileToRead.CoseThisWorkbook.Sheets (1). Range ("A1"). Value = TextString 'galite nurodyti darbalapį ir langelį, kur įklijuoti teksto failo turinįPabaiga Sub |
Aukščiau pateiktas kodas naudoja „FileSystemObject“. Norėdami jį naudoti, turėsite nustatyti nuorodą į VB scenarijaus vykdymo laiko biblioteką. Daugiau informacijos rasite čia.
Nenaudodami „FileSystemObject“, galite įklijuoti teksto failo turinį naudodami žemiau esantį kodą. Jei jūsų teksto faile yra eilučių skyriklis, jis bus įklijuotas eilutėmis.
123456789101112 | Sub PasteTextFileContent ()Dim wbExcel kaip darbaknygė, wbText kaip darbaknygė„Dim wsExcel“ kaip darbalapisNustatykite wbExcel = ThisWorkbook 'čia nurodykite, į kurį „Excel“ failą teksto failo turinys turi būti įklijuotasNustatykite wsExcel = wbExcel.Sheets (1) 'čia nurodykite, kurį darbalapį naudotiNustatykite wbText = Workbooks.Open ("C: \ Test \ TestFile.txt") 'pridėkite čia savo teksto failo keliąwbText.Sheets (1). Ląstelės. Kopijuoti wsExcel.CellswbText.Clos SaveChanges: = NetiesaPabaiga Sub |
Skaitykite teksto failo turinį eilute po eilutės, stulpeliu po stulpelio
Jūsų teksto faile gali būti kelios eilutės ir keli elementai, išvardyti eilutėse, atskirti kableliais, kabliataškiais, skirtukais, tarpais ir tt … Norint teisingai perskaityti ir įklijuoti teksto failo turinį, gali prireikti šio kodo:
1234567891011121314151617181920212223242526 | Sub PasteTextFileContentWithSeparators ()„Dim StrLine“ kaip eilutėPritemdyti FSO kaip naują „FileSystemObject“Užblokuoti PSO kaip objektą„Dim StrLineElements As Variant“Dim indeksas kaip ilgasTamsiai ilgasDim Dimiteris kaip eilutėNustatykite FSO = CreateObject ("Scripting.FileSystemObject")Nustatykite TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Delimiter = "," 'skirtukas, naudojamas jūsų teksto faileIndeksas = 1Do while TSO.AtEndOfStream = NetiesaStrLine = TSO.ReadLineStrLineElements = Split (StrLine, Delimiter)I = LBound (StrLineElements) iki UBound (StrLineElements)Ląstelės (indeksas, i + 1). Vertė = StrLineElements (i) “šis kodas pradės įklijuoti teksto failo turinį iš aktyvaus darbalapio A1 (langelis (1,1)) langelioKitas I.Indeksas = indeksas + 1KilpaPSO. UždarytiPabaiga Sub |
Skirtukas, naudojamas jūsų teksto faile, gali būti kablelis („,“), kablelis su tarpais („,“), kabliataškis („;“), kabliataškis su tarpais („;“), tarpas („“), skirtukas (pakeiskite, tada skiriamieji ženklai = vbTab) arba retais atvejais bet kuris kitas simbolis.
Skaitykite tekstinius failus į masyvus
Jei jums reikia skaityti teksto failo turinį į masyvą ir įklijuoti eilutę po eilutės, stulpelį po stulpelio į savo darbalapį, jums reikės šio kodo:
12345678910111213141516171819202122232425262728293031323334 | Sub ReadDelimitedTextFileIntoArray ()Dim Dimimeter as StringPritemdyti teksto failą kaip sveiką skaičiųDim FilePath kaip eilutėPritemdyti failo turinį kaip eilutęDim LineArray () kaip eilutėDim DataArray () kaip eilutėDim TempArray () kaip eilutėDim rw As Long, col As LongDelimiter = vbTab 'skirtukas, naudojamas jūsų teksto faileFilePath = "C: \ Test \ TestFileTab.txt"rw = 1TextFile = FreeFileAtidarykite „FilePath“, kad įvestumėte kaip „TextFile“FileContent = Įvestis (LOF (TextFile), TextFile)Uždarykite „TextFile“LineArray () = Split (FileContent, vbNewLine) 'keiskite vbNewLine į vbCrLf arba vbLf, priklausomai nuo teksto faile naudojamo eilučių skyriklioX = LBound (LineArray) į UBound (LineArray)Jei Len (Apkarpyti (LineArray (x))) 0 TadaTempArray = Split (LineArray (x), Delimiter)col = UBound („TempArray“)„ReDim Preserve DataArray“ (col, rw)Y = LBound (TempArray) į UBound (TempArray)DataArray (y, rw) = TempArray (y)Ląstelės (x + 1, y + 1). Value = DataArray (y, rw) “šis kodas pradės įklijuoti teksto failo turinį iš aktyvaus darbalapio A1 (langelis (1,1)) langelioKitas yPabaiga Jeirw = rw + 1Kitas xPabaiga Sub |
Eilučių skiriamieji elementai jūsų teksto faile gali būti vežimo grąžinimas ir linijų tiekimo derinys (Chr (13)+Chr (10)) arba eilutės tiekimas (Chr (10)). Atitinkamai naudokite vbCrLf arba vbLf. Jei nesate tikri, eilučių skyriklį nurodykite naudodami „vbNewLine“.