Чтение текстового файла VBA (чтение, синтаксический анализ и импорт)

В этом руководстве будет показано, как читать содержимое из текстовых файлов и вставлять его в рабочие листы с помощью VBA.

Чтение содержимого текстового файла на листе

Самый простой способ прочитать содержимое текстового файла - скопировать его в ячейку листа.

123456789101112 Подложка FSOPasteTextFileContent ()Dim FSO как новый объект FileSystemObjectУстановите FSO = CreateObject ("Scripting.FileSystemObject")Установите FileToRead = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForReading) 'добавьте сюда путь к вашему текстовому файлуTextString = FileToRead.ReadAllFileToRead.CloseThisWorkbook.Sheets (1) .Range ("A1"). Value = TextString 'вы можете указать лист и ячейку, куда нужно вставить содержимое текстового файла.Конец подписки

В приведенном выше коде используется FileSystemObject. Чтобы использовать его, вам нужно будет установить ссылку на библиотеку времени выполнения сценария VB. Смотрите здесь для получения дополнительной информации.

Без использования FileSystemObject вы можете вставить содержимое текстового файла с помощью приведенного ниже кода. Если ваш текстовый файл содержит разделитель строк, он будет вставлен построчно.

123456789101112 Подложка PasteTextFileContent ()Dim wbExcel как рабочая книга, wbText как рабочая книгаDim wsExcel как рабочий листSet wbExcel = ThisWorkbook 'укажите здесь, в какой файл Excel следует вставить содержимое текстового файла.Set wsExcel = wbExcel.Sheets (1) 'укажите здесь, какой рабочий лист использоватьУстановите wbText = Workbooks.Open ("C: \ Test \ TestFile.txt") 'добавьте сюда путь к вашему текстовому файлуwbText.Sheets (1) .Cells.Copy wsExcel.CellswbText.Close SaveChanges: = FalseКонец подписки

Чтение содержимого текстового файла строка за строкой, столбец за столбцом

В текстовом файле может быть несколько строк и несколько элементов, перечисленных в строках, разделенных запятой, точкой с запятой, табуляцией, пробелом и т. Д. Для правильного чтения и вставки содержимого текстового файла вам может потребоваться следующий код:

1234567891011121314151617181920212223242526 Подложка PasteTextFileContentWithSeparators ()Dim StrLine как строкаDim FSO как новый объект FileSystemObjectDim TSO как объектDim StrLineElements как вариантТусклый индекс до тех пор, покаТусклый я до тех пор, покаТусклый разделитель как строкаУстановите FSO = CreateObject ("Scripting.FileSystemObject")Установите TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt").Delimiter = "," 'разделитель, который используется в вашем текстовом файлеИндекс = 1Делать пока TSO.AtEndOfStream = FalseStrLine = TSO.ReadLineStrLineElements = Разделить (StrLine, Delimiter)Для i = LBound (StrLineElements) To UBound (StrLineElements)Cells (Index, i + 1) .Value = StrLineElements (i) 'этот код начнет вставку содержимого текстового файла из ячейки A1 (Cell (1,1)) активного листа.Далее яИндекс = Индекс + 1ПетляTSO.ЗакрытьКонец подписки

В качестве разделителя в текстовом файле может использоваться запятая («,»), запятая с пробелом («,«), точка с запятой («;»), точка с запятой с пробелом («;»), пробел (««), табуляция. (измените затем Delimiter = vbTab) или, в редких случаях, любой другой символ.

Чтение текстовых файлов в массивы

Если вам нужно прочитать содержимое текстового файла в массив и вставить построчно, столбец за столбцом в рабочий лист, вам понадобится следующий код:

12345678910111213141516171819202122232425262728293031323334 Sub ReadDelimitedTextFileIntoArray ()Тусклый разделитель в виде строкиТусклый текстовый файл как целое числоDim FilePath как строкаРазвернуть содержимое файла как строкуDim LineArray () как строкаDim DataArray () как строкаDim TempArray () как строкаDim rw As Long, col As LongDelimiter = vbTab 'разделитель, который используется в вашем текстовом файлеFilePath = "C: \ Test \ TestFileTab.txt"rw = 1TextFile = FreeFileОткрыть FilePath для ввода как текстового файлаFileContent = Input (LOF (текстовый файл), текстовый файл)Закрыть текстовый файлLineArray () = Split (FileContent, vbNewLine) 'измените vbNewLine на vbCrLf или vbLf в зависимости от разделителя строк, который используется в вашем текстовом файлеДля x = LBound (LineArray) To UBound (LineArray)Если Len (Trim (LineArray (x))) 0 ТогдаTempArray = Split (LineArray (x), разделитель)col = UBound (TempArray)ReDim Preserve DataArray (столбец, rw)Для y = LBound (TempArray) To UBound (TempArray)DataArray (y, rw) = TempArray (y)Cells (x + 1, y + 1) .Value = DataArray (y, rw) 'этот код начнет вставку содержимого текстового файла из ячейки A1 (Cell (1,1)) активного листаСледующий yКонец, еслиrw = rw + 1Далее xКонец подписки

Разделителями строк в текстовом файле могут быть комбинация возврата каретки и перевода строки (Chr (13) + Chr (10)) или перевода строки (Chr (10)). Используйте соответственно vbCrLf или vbLf. Если вы не уверены, используйте vbNewLine для обозначения разделителя строк.

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave