Приветствую! Сегодня мы поговорим о файлах, а точнее, как получать информацию из текстовых файлов в VBA. И будем повышать ваше умение программировать, как обычно, на примере.
Задача:
В обычном текстовом файле содержатся строки:
Приветствуем Вас на сайте CodeTown.ru
здесь Вы найдёте много интересных
примеров на разные темы
и на разных языках.
Наслаждайтесь=)
Необходимо вывести их на лист в Excel, чтобы каждое слово находилось в своей ячейки с учётом пробелов.
Поехали!
Sub Prog() On Error GoTo errr Open "C:\Users\......\vba\files\file.txt" For Input As #1 Dim s() As String Dim i As Integer i = 0 Do ReDim Preserve s(i + 1) As String i = i + 1 Input #1, s(i - 1) Loop While s(i - 1) <> ""
Если вы читали предыдущие статьи, то в курсе об обработчике ошибок On Error GoTo. Затем, Open «C:\Users\…….\vba\files\file.txt» For Input As #1 — так прописываем путь к файлу и тут должен быть прописан именно !Ваш путь!, к которому обращаемся и даём этому файлу символичный номер 1.
Далее, уже в цикле, выводим построчно с помощью Input в наш массив строк s. Также напомню, что ReDim Preserve— команда перераспределения массива с сохранением в нём данных.
Ах да, в этой части кода мы просто циклично читаем файл и заполняем строками массив s.
1: Dim j As Integer Dim x As Integer Dim sl As String Dim le As Integer Dim u As Integer Dim k As Integer For j = 1 To i - 1 x = 1 u = 1 k = 0 Do While InStr(s(j - 1), " ") <> 0 x = InStr(s(j - 1), " ") sl = Left(s(j - 1), x) s(j - 1) = Right(s(j - 1), Len(s(j - 1)) - x) k = k + 1 Cells(j, u) = sl u = u + 1 Loop Cells(j, u) = s(j - 1) Next j Close #1 errr: If Err.Number = 62 Then Resume 1 End Sub
Как видите, программа небольшая. В этом куске мы работаем с массивом строк, который получили в начале, и раскладываем каждое слово по полочкам. Запускаем цикл For для прохождения по всем записанным строкам, а While — по символам внутри строк. Мы отрезаем от строки «слова» до пробела и записываем в соответствующие ячейки.
Обязательно закрывайте файл командой Close #1 после работы над ним.
Отдельно отмечу строчку If Err.Number = 62 Then Resume 1. При чтении файла, когда компилятор дойдёт до конца, то выпадет ошибка, чей номер как раз и равен 62. То есть, с помощью этой ошибки мы выходим из чтения файла в начале всего кода.
Если Вам какие-то команды остались не ясны, советую почитать предыдущие статьи, там вы найдёте примеры на работу с ними.
Наш вывод:
Вот, собственно, и всё. Задавайте вопросы в комментариях. Надеюсь вы прониклись магией VBA, если же нет, читайте продолжение. =)
Скачать исходники
Будьте первым, кто оставит комментарий