Този урок ще покаже как да четете съдържание от текстови файлове ред по ред с VBA.
Можем да четем текстовия файл като цял файл или ред по ред.
Прочетете текстов файл ред по ред
Текстът в текстов файл обикновено се състои от няколко реда, разделени с разделители. Това могат да бъдат запетая („,“), запетая с интервал („,“), точка и запетая („;“), точка и запетая с интервал („;“), интервал („“), раздел (vbTab ) или в редки случаи друг символ като тилда (~). Редовете обикновено са разделени с прекъсване на ред (vbCRLF).
Най -лесният начин да прочетете текстов файл ред по ред в нашия работен лист във VBA е да изберете първата клетка, където искаме да бъде поставен текстът, и след това да изпълните следния код:
1234567891011 | Sub ReadFile ()Dim strFile As String, strLine As StringstrFile = "C: \ Test \ TestFile.txt"Отворете strFile за въвеждане като #1Направете до EOF (1)Линеен вход #1, strLineActiveCell = strLineActiveCell.Offset (1, 0) .ИзберетеЦикълЗатворете #1End Sub |
Това ще постави всеки ред от текстовия файл в една клетка в Excel.
Можем също да четем текстов файл във VBA с помощта на FileSystemObject. В кода по -долу сме използвали късно свързване с обекта на файловата система. Можете също да създадете препратка към него във вашия VBA проект. Вижте тук за повече информация.
123456789101112131415 | Sub ReadTextFile ()Dim strLine As StringDim FSO като обектDim TSO As ObjectЗадайте FSO = CreateObject ("Scripting.FileSystemObject")Задайте TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Правете, докато не сте TSO.AtEndOfStreamstrLine = TSO.ReadLineActiveCell = strLineActiveCell.Offset (1, 0) .ИзберетеЦикълTSO.ЗатвориЗадайте TSO = НищоЗадайте FSO = НищоEnd Sub |
Можем да създадем малко по -сложен цикъл, ако искаме да разделим линиите в клетки чрез техните разделители. Тук използвахме ранното свързване в кода и декларирахме обект на файлова система.
123456789101112131415161718192021222324 | Sub ReadTextFileWithSeparators ()Dim StrLine As StringЗатъмнете FSO като нов FileSystemObjectDim TSO As ObjectDim StrLineElements като вариантDim Index As LongDim i As LongDim Delimiter As StringЗадайте FSO = CreateObject ("Scripting.FileSystemObject")Задайте TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Разделител = ","Индекс = 1Do While TSO.AtEndOfStream = FalseStrLine = TSO.ReadLineStrLineElements = Разделяне (StrLine, Delimiter)За i = LBound (StrLineElements) Към UBound (StrLineElements)Клетки (Index, i + 1). Value = StrLineElements (i)Следва iИндекс = Индекс + 1ЦикълTSO.ЗатвориЗадайте TSO = НищоЗадайте FSO = НищоEnd Sub |
Това ще доведе до разделяне на редовете в отделни клетки в Excel според графиката по -долу.