Ten samouczek pokaże, jak czytać zawartość z plików tekstowych i wklejać ją do arkuszy roboczych za pomocą VBA.
Wczytaj zawartość pliku tekstowego do arkusza roboczego
Najprostszym sposobem odczytania zawartości pliku tekstowego jest skopiowanie go do komórki arkusza roboczego.
123456789101112 | Sub FSPasteTextFileContent()Dim FSO jako nowy obiekt systemu plikówUstaw FSO = CreateObject("Scripting.FileSystemObject")Set FileToRead = FSO.OpenTextFile("C:\Test\TestFile.txt", ForReading) 'dodaj tutaj ścieżkę swojego pliku tekstowegoTextString = FileToRead.ReadAllFileToRead.CloseThisWorkbook.Sheets(1).Range("A1").Value = TextString 'możesz określić arkusz i komórkę, w której chcesz wkleić zawartość pliku tekstowegoNapis końcowy |
Powyższy kod używa FileSystemObject. Aby z niego skorzystać, musisz ustawić odwołanie do biblioteki wykonawczej skryptu VB. Zobacz tutaj, aby uzyskać więcej informacji.
Bez użycia FileSystemObject możesz wkleić zawartość pliku tekstowego za pomocą poniższego kodu. Jeśli twój plik tekstowy zawiera separator linii, zostanie wklejony linia po linii.
123456789101112 | Sub PasteTextFileContent ()Dim wbExcel jako skoroszyt, wbText jako skoroszytDim wsExcel jako arkusz roboczySet wbExcel = ThisWorkbook 'określ tutaj, do którego pliku Excel ma zostać wklejona zawartość pliku tekstowegoUstaw wsExcel = wbExcel.Sheets(1) 'w tym miejscu określ, którego arkusza chcesz użyćSet wbText = Workbooks.Open("C:\Test\TestFile.txt") 'dodaj tutaj ścieżkę pliku tekstowegowbText.Sheets(1).Cells.Copy wsExcel.CellswbText.Close SaveChanges:=FalseNapis końcowy |
Czytaj zawartość pliku tekstowego wiersz po wierszu, kolumna po kolumnie
Twój plik tekstowy może mieć kilka wierszy i kilka elementów wymienionych w wierszach oddzielonych przecinkiem, średnikiem, tabulatorem, spacją itp. Aby poprawnie odczytać i wkleić zawartość pliku tekstowego, możesz potrzebować poniższego kodu:
1234567891011121314151617181920212223242526 | Sub PasteTextFileContentWithSeparators()Dim StrLine jako ciągDim FSO jako nowy obiekt systemu plikówDim OSP jako obiektDim StrLineElements jako wariantIndeks przyciemnienia tak długoPrzyciemnij i tak długoOgranicznik dim jako ciągUstaw FSO = CreateObject("Scripting.FileSystemObject")Ustaw TSO = FSO.OpenTextFile("C:\Test\TestFile.txt")Delimiter=", " 'delimiter używany w twoim pliku tekstowymIndeks = 1Rób, gdy TSO.AtEndOfStream = FalseStrLine = TSO.ReadLineStrLineElements = Podział(StrLine, separator)For i = LBound(StrLineElements) To UBound(StrLineElements)Cells(Index, i + 1)).Value = StrLineElements(i) 'ten kod rozpocznie wklejanie zawartości pliku tekstowego z komórki A1 (Cell(1,1)) aktywnego arkusza roboczegoDalej jaIndeks = Indeks + 1PętlaOSP.ZamknijNapis końcowy |
Ogranicznikiem używanym w pliku tekstowym może być przecinek („,”), przecinek ze spacją („,”), średnik („;”), średnik ze spacją („;”), spacja („”), tabulator (zmień wtedy Delimiter = vbTab) lub w rzadkich przypadkach dowolny inny znak.
Wczytaj pliki tekstowe do tablic
Jeśli chcesz wczytać zawartość pliku tekstowego do tablicy i wkleić wiersz po wierszu, kolumna po kolumnie do arkusza roboczego, będziesz potrzebować poniższego kodu:
12345678910111213141516171819202122232425262728293031323334 | Sub ReadDelimitedTextFileIntoArray()Ogranicznik przyciemnienia jako ciągDim TextFile As IntegerDim FilePath As StringDim FileContent As StringDim LineArray() jako ciągDim DataArray() jako ciągDim TempArray() jako ciągDim rw As Long, kol As LongDelimiter = vbTab 'ogranicznik używany w twoim pliku tekstowymFilePath = "C:\Test\TestFileTab.txt"rw = 1TextFile = FreeFileOtwórz FilePath do wprowadzania danych jako TextFileFileContent = Input(LOF(TextFile), TextFile)Zamknij plik tekstowyLineArray() = Split(FileContent, vbNewLine) 'zmień vbNewLine na vbCrLf lub vbLf w zależności od separatora linii używanego w pliku tekstowymDla x = LBound(LineArray) To UBound(LineArray)Jeśli Len(Przytnij(LineArray(x))) 0 WtedyTempArray = Split(LineArray(x), Ogranicznik)kol = UBound(TempArray)ReDim Zachowaj tablicę danych (kolumna, rw)For y = LBound(TempArray) To UBound(TempArray)TablicaDanych (y, rw) = Tablica Temp (y)Cells(x + 1, y + 1)).Value = DataArray(y, rw) 'ten kod rozpocznie wklejanie zawartości pliku tekstowego z komórki A1 (Cell(1,1)) aktywnego arkusza roboczegoNastępny takZakończ, jeślirw = rw + 1Następny xNapis końcowy |
Separatory wierszy w pliku tekstowym mogą być kombinacją powrotu karetki i wysuwu wiersza (Chr(13)+Chr(10)) lub znaku wysuwu wiersza (Chr(10)). Użyj odpowiednio vbCrLf lub vbLf. Jeśli nie jesteś pewien, użyj vbNewLine do wskazania separatora linii.