VBA čitanje tekstualne datoteke (čitanje, raščlanjivanje i uvoz)

Ovaj će vodič pokazati kako čitati sadržaj iz tekstualnih datoteka i zalijepiti ga na radne listove s VBA -om.

Pročitajte sadržaj tekstualne datoteke na radnom listu

Najjednostavniji način čitanja sadržaja tekstualne datoteke je kopiranje u ćeliju radnog lista.

123456789101112 Pod FSOPasteTextFileContent ()Zatamnite FSO kao novi FileSystemObjectPostavi FSO = CreateObject ("Scripting.FileSystemObject")Postavi FileToRead = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForReading) 'ovdje dodajte put vaše tekstualne datotekeTextString = FileToRead.ReadAllFileToRead.CloseThisWorkbook.Sheets (1) .Range ("A1"). Value = TextString 'možete odrediti radni list i ćeliju u koju ćete zalijepiti sadržaj tekstualne datotekeKraj podm

Gornji kod koristi FileSystemObject. Da biste ga mogli koristiti, morat ćete postaviti referencu na biblioteku vremena izvođenja VB skripte. Za više informacija pogledajte ovdje.

Bez upotrebe FileSystemObject možete zalijepiti sadržaj svoje tekstualne datoteke donjim kodom. Ako vaša tekstualna datoteka sadrži separator linija, bit će zalijepljena redak po redak.

123456789101112 Sub PasteTextFileContent ()Zatamni wbExcel kao radnu knjigu, wbText kao radnu knjiguZatamni wsExcel kao radni listPostavi wbExcel = Ova radna knjiga 'ovdje navedite u koju Excel datoteku sadržaj tekstualne datoteke treba zalijepitiPostavite wsExcel = wbExcel.Sheets (1) 'ovdje navedite koji radni list ćete koristitiPostavi wbText = Radne knjige.Open ("C: \ Test \ TestFile.txt") 'ovdje dodajte put vaše tekstualne datotekewbText.Sheets (1) .Cells.Copy wsExcel.CellswbText.Zatvori Spremi promjene: = NetačnoKraj podm

Čitajte sadržaj tekstualne datoteke redak po redak, stupac po stupac

Vaša tekstualna datoteka može imati nekoliko redaka i nekoliko elemenata navedenih u redovima odvojenih zarezima, točkom i zarezom, tabulatorom, razmakom itd … Da biste ispravno pročitali i zalijepili sadržaj tekstualne datoteke, možda će vam trebati ovaj kôd u nastavku:

1234567891011121314151617181920212223242526 Sub PasteTextFileContentWithSeparators ()Dim StrLine As StringZatamnite FSO kao novi FileSystemObjectDim TSO kao objektDim StrLineElements kao varijantaZatamni indeks koliko god je dugDim i As LongDim Delimiter kao nizPostavi FSO = CreateObject ("Scripting.FileSystemObject")Postavi TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Razdjelnik = "," 'graničnik koji se koristi u vašoj tekstualnoj datoteciIndeks = 1Učiniti Dok TSO.AtEndOfStream = NetačnoStrLine = TSO.ReadLineStrLineElements = Split (StrLine, Delimiter)Za i = LBound (StrLineElements) Za UBound (StrLineElements)Ćelije (Indeks, i + 1). Vrijednost = StrLineElements (i) 'ovaj će kôd početi lijepiti sadržaj tekstualne datoteke iz ćelije A1 (ćelija (1,1)) aktivnog radnog listaSljedeći iIndeks = Indeks + 1PetljaTSO.ZatvoriteKraj podm

Razdjelnik koji se koristi u vašoj tekstualnoj datoteci može biti zarez (“,”), zarez s razmakom (“,“), točka -zarez (“;”), točka -zarez s razmakom (“;“), razmak (““), kartica (promijenite zatim Razdjelnik = vbTab) ili u rijetkim slučajevima bilo koji drugi znak.

Čitajte tekstualne datoteke u nizove

Ako trebate pročitati sadržaj vaše tekstualne datoteke u niz i zalijepiti redak po redak, stupac po stupac u svoj radni list, trebat će vam ovaj kod u nastavku:

12345678910111213141516171819202122232425262728293031323334 Sub ReadDelimitedTextFileIntoArray ()Dim Delimiter As StringZatamni tekstualnu datoteku kao cijeli brojDim FilePath As StringDim FileContent As StringDim LineArray () Kao nizDim DataArray () Kao nizPriguši TempArray () Kao nizDim rw As Long, col As LongRazdjelnik = vbTab 'graničnik koji se koristi u vašoj tekstualnoj datoteciFilePath = "C: \ Test \ TestFileTab.txt"rw = 1TextFile = FreeFileOtvorite FilePath za unos kao tekstualnu datotekuFileContent = Unos (LOF (TextFile), TextFile)Zatvorite tekstualnu datotekuLineArray () = Split (FileContent, vbNewLine) 'promijenite vbNewLine u vbCrLf ili vbLf ovisno o razdjelniku retka koji se koristi u vašoj tekstualnoj datoteciZa x = LBound (LineArray) Za UBound (LineArray)Ako Len (Trim (LineArray (x))) 0 TadaTempArray = Split (LineArray (x), razdjelnik)col = UBound (TempArray)ReDim Preserve DataArray (col, rw)Za y = LBound (TempArray) Za UBound (TempArray)DataArray (y, rw) = TempArray (y)Ćelije (x + 1, y + 1). Vrijednost = DataArray (y, rw) 'ovaj će kôd početi lijepiti sadržaj tekstualne datoteke iz ćelije A1 (ćelija (1,1)) aktivnog radnog listaSljedeći yZavrši akorw = rw + 1Sljedeći xKraj podm

Odvajači redaka u vašoj tekstualnoj datoteci mogu biti kombinacija povratka nosača i unosa retka (Chr (13)+Chr (10)) ili unos retka (Chr (10)). U skladu s tim upotrijebite vbCrLf ili vbLf. Ako niste sigurni, upotrijebite vbNewLine za označavanje separatora redaka.

wave wave wave wave wave