Ten samouczek pokaże, jak pisać do plików tekstowych za pomocą VBA.
Napisz do pliku tekstowego
Poniższe kody używają Obiekt systemu plików. Aby z niego skorzystać, musisz ustawić odwołanie do biblioteki wykonawczej skryptu VB.
Napisz do nowego pliku tekstowego
Z Utwórz plik tekstowy metoda Obiekt systemu plików możesz stworzyć, a następnie dodać treść do pliku tekstowego:
123456789 | Sub FSOCreateAndWriteToTextFile()Dim FSO jako nowy obiekt systemu plikówUstaw FSO = CreateObject("Scripting.FileSystemObject")Ustaw FileToCreate = FSO.CreateTextFile("C:\Test\TestFile.txt")FileToCreate.Write "linia testowa"FileToCreate.CloseNapis końcowy |
Należy pamiętać, że treść nie będzie ujęta w cudzysłów.
Napisz do istniejącego pliku tekstowego
Aby pisać do istniejącego pliku tekstowego, możesz użyć Otwórz plik tekstowy metoda Obiekt systemu plików z Do pisania tryb.
123456789 | Sub FSOWriteToTextFile()Dim FSO jako nowy obiekt systemu plikówUstaw FSO = CreateObject("Scripting.FileSystemObject")Ustaw FileToWrite = FSO.OpenTextFile("C:\Test\TestFile.txt", ForWriting)FileToWrite.Write "linia testowa"FileToWrite.CloseNapis końcowy |
Pamiętaj, że nie musisz koniecznie FileSystemObject zapisywać w istniejącym pliku tekstowym. Powyższy przykład jest pokazany w inny sposób w tym kodzie poniżej (zobacz inny przykład w sekcji Zakres danych do pliku tekstowego):
123456789 | Sub WriteToTextFile()Dim nazwa pliku jako ciągFileName = "C:\Test\TestFile.txt"Otwórz nazwę pliku do wyjścia jako nr 1Drukuj #1, "linia testowa"Zamknij #1Napis końcowy |
Należy pamiętać, że użycie polecenia Write zamiast Print spowoduje, że dodana treść zostanie ujęta w cudzysłów. Posiadanie obu poleceń w swoim makrze
12 | Napisz #1, "linia testowa #1"Drukuj #1, "linia testowa #2" |
spowoduje powstanie takiego pliku tekstowego:
Programowanie VBA | Generator kodu działa dla Ciebie!
Dołącz do pliku tekstowego
Zmieniając tryb w powyższym kodzie na ForAppending, można dodać linię na końcu pliku tekstowego:
1 | Ustaw FileToWrite = FSO.OpenTextFile("C:\Test\TestFile.txt", ForAppending) |
Metoda WriteLine
Ta metoda dołącza ciąg wejściowy jako oddzielny wiersz do istniejącej zawartości.
Metoda zapisu
Ciąg wejściowy jest dodawany w tym samym wierszu, co istniejąca zawartość.
Masz dość wyszukiwania przykładów kodu VBA? Wypróbuj Automakro!
NapiszPusteLinie
Ta metoda przyjmuje jako parametr liczbę pustych wierszy do zapisania w pliku tekstowym.
Poniższy kod ilustruje różnicę między różnymi metodami zapisu:
12345678910111213 | Podrzędne metody zapisu()Dim FSO jako nowy obiekt systemu plikówUstaw FSO = CreateObject("Scripting.FileSystemObject")Ustaw FileToWrite = FSO.OpenTextFile("C:\Test\TestFile.txt", ForAppending)FileToWrite.Write "linia testowa nr 1"FileToWrite.Write "linia testowa #2"FileToWrite.WriteBlankLines (3)FileToWrite.WriteLine "linia testowa #3"FileToWrite.WriteLine "linia testowa #4"FileToWrite.CloseNapis końcowy |
A wynik:
Programowanie VBA | Generator kodu działa dla Ciebie!
Zakres danych do pliku tekstowego
Jeśli chcesz wyprowadzić zakres danych z arkusza roboczego do pliku tekstowego, możesz użyć tego kodu:
12345678910111213141516171819 | Podrzędne wyjście do pliku tekstowego()Dim nazwa_pliku jako ciąg, tekst linii jako ciągDim MyRange As Range, i, jFileName = "C:\Test\TestFile.txt" 'możesz tutaj określić nazwę pliku tekstowego, który chcesz utworzyćOtwórz nazwę pliku do wyjścia jako nr 1Ustaw MyRange = Range("data") 'zakłada się, że masz w arkuszu zakres danych o nazwie "data"For i = 1 To MyRange.Rows.CountDla j = 1 To MyRange.Columns.CountLineText = IIf(j = 1, "", LineText & ",") & MyRange.Cells(i, j) 'tworzący plik tekstowy będzie miał separator przecinkówNastępny jPrint #1, LineText 'użycie polecenia Write zamiast Print spowoduje, że dane w wyjściowym pliku tekstowym będą ujęte w cudzysłówDalej jaZamknij #1Napis końcowy |
Tablica do pliku tekstowego
Możesz także zapisać swoją tablicę danych w pliku tekstowym w następujący sposób:
12345678910111213141516 | Sub SaveArrayToTextFile()Dim MyArray jako wariantDim FSO jako nowy obiekt systemu plikówUstaw FSO = CreateObject("Scripting.FileSystemObject")MyArray = Array(Array("00", "01"), Array("10", "11"), Array("20", "21"))Ustaw FileToCreate = FSO.CreateTextFile("C:\Test\TestFile.txt")Dla n = 0 To UBound(MyArray)FileToCreate.WriteLine MyArray(n)(0) & "," & MyArray(n)(1)NastępnyFileToCreate.CloseNapis końcowy |