Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Операторы чтения и записи в файл

    Чтение и запись в файл, открытый с помощью оператора Open. Операторы Input, Line Input, Write и функция EOF. Примеры использования в VBA Excel.

    Операторы чтения и записи в файл

    Оператор Input #

    Оператор Input # считывает данные из открытого файла с последовательным доступом и присваивает эти данные переменным.

    Оператор Input # используется только с файлами, открытыми в режиме Input или Binary. При прочтении стандартные строковые или числовые значения присваиваются переменным без изменения.

    Синтаксис оператора Input #:

    Компоненты оператора Input #:

    • Номер_файла – обязательный параметр, представляющий из себя номер, присвоенный файлу при открытии с помощью оператора Open.
    • Переменные – обязательный параметр, представляющий из себя список переменных, разделенных запятой, которым присваиваются значения, считанные из файла.

    Особенности применения оператора Input #:

    • Элементы данных в файле должны быть указаны в том же порядке, что и переменные в списке Переменные, и соответствовать им по типу данных. Если переменная числовая, а данные текстовые, этой переменной будет присвоено нулевое значение.
    • Если при чтении данных достигнут конец файла, чтение прерывается и возникает ошибка. Для ее предупреждения в коде VBA Excel используется функция EOF.
    • Чтобы данные из файла могли быть правильно прочитаны и записаны в переменные с помощью оператора Input #, они должны быть записаны в файл с помощью оператора Write #. Он обеспечивает правильное разделение каждого из полей (элементов) данных.

    Оператор Line Input #

    Оператор Line Input # считывает одну строку из открытого файла с последовательным доступом и присваивает ее значение строковой переменной.

    Оператор Line Input # считывает из файла по одному символу до тех пор, пока не встретится символ возврата каретки (Chr(13)) или последовательность символа возврата каретки и перевода строки (Chr (13) + Chr(10)).

    Синтаксис оператора Line Input #:

    Компоненты оператора Line Input #:

    • Номер_файла – обязательный параметр, представляющий из себя номер, присвоенный файлу при открытии с помощью оператора Open.
    • Переменная – обязательный параметр, представляющий из себя имя переменной, объявленной как String или Variant, которой присваивается строка, считанная из файла.

    Оператор Write #

    Оператор Write # записывает данные в файл с последовательным доступом.

    Синтаксис оператора Write #:

    Компоненты оператора Write #:

    • Номер_файла – обязательный параметр, представляющий из себя номер, присвоенный файлу при открытии с помощью оператора Open.
    • Данные – необязательный параметр, представляющий из себя одно или несколько числовых или строковых выражений, разделенных запятой, которые нужно записать в файл.

    Особенности применения оператора Write #:

    • Данные, записанные с помощью оператора Write #, считываются из файла с помощью оператора Input #.
    • Если опустить параметр Данные и добавить запятую после Номер_файла, в файл будет добавлена пустая строка.
    • Несколько выражений в списке Данные могут быть разделены точкой с запятой или запятой.
    • Числовые данные всегда записываются с точкой в качестве разделителя целой и дробной части.
    • Оператор Write # вставляет запятые между элементами и прямые парные кавычки вокруг строк при их записи в файл.
    • После записи в файл последнего символа из параметра Данные оператор Write # вставляет символы возврата каретки и перевода строки (Chr (13) + Chr(10)).

    Функция EOF

    Функция EOF возвращает логическое значение True, когда достигнут конец файла, открытого для последовательного (Input) или произвольного (Random) доступа.

    Синтаксис функции EOF:

    Номер_файла – это номер, присвоенный файлу при открытии с помощью оператора Open.

    Функция EOF используется для предупреждения ошибок, вызываемых попытками выполнить чтение после конца файла. Она возвращает значение False, пока не будет достигнут конец файла.

    Примеры чтения и записи в файл

    Пример 1
    Открытие (или создание, если он не существует) текстового файла для чтения и записи и запись в него одной строки, состоящей из двух текстовых и одного числового значений. Файл с именем myFile1.txt будет создан в той же папке, где расположен файл Excel с кодом VBA.

    Строки и число можно предварительно присвоить переменным, объявленным с соответствующими типами данных, и использовать их для записи данных в файл (в строках кода с оператором Write #, как в этом и следующем примерах).

    Пример 2
    Открытие (или создание, если он не существует) файла без расширения для чтения и записи и запись в него трех строк: двух текстовых и одной в числовом формате. Файл с именем myFile2 будет создан в той же папке, где расположен файл Excel с кодом VBA.

    Так как у файла нет расширения, Windows выведет диалоговое окно для выбора открывающей его программы. Выберите любой текстовый редактор или интернет-браузер.

    Пример 3
    Считываем строку, разделенную на отдельные элементы, из файла myFile1.txt и записываем в три переменные, по типу данных соответствующие элементам.

    Попробуйте заменить в этом примере строку Input #ff, str1, str2, num1 сначала на строку Input #ff, str1, затем на строку Line Input #ff, str1, чтобы наглядно увидеть разницу между операторами Input # и Line Input #.

    В следующих примерах (4 и 5) замена оператора Input # на Line Input # не приведет ни к каким изменениям, так как данные в строках файла myFile2 не разделены на элементы (поля).

    Пример 4
    Считываем поочередно три строки из файла myFile2 и записываем в три элемента массива, объявленного как Variant, так как в этот файл ранее были записаны две строки с текстом и одна с числом.

    Пример 5
    Считываем с помощью цикла Do While… Loop все строки из файла myFile2 и записываем построчно в переменную, объявленную как String (число из третьей строки запишется как текст). Для остановки цикла при достижении конца файла используем функцию EOF.


    Предыдущая часть темы об открытии файла для ввода и вывода информации опубликована в статье: Оператор Open (синтаксис, параметры). Смотрите также связанную статью: Функция FreeFile.

    Смотрите, как создавать и открывать текстовые файлы с помощью методов CreateTextFile и OpenTextFile. Чтение файла, запись и добавление информации с помощью объекта TextStream.

    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    3 комментария для “VBA Excel. Операторы чтения и записи в файл”

    1. Добрый день, подскажите, пожалуйста, почему первый пример работает, а на остальных выдает run-time error '-2147023741 (80070483)' Method 'Run' of object 'IWshShell3' failed?

      1. Евгений

        Здравствуйте, Федор!
        Эту ошибку создавал метод Run объекта WScript.Shell при наличии пробелов в полном имени файла (включая путь к нему). Я заменил его на метод ThisWorkbook.FollowHyperlink.

    2. Здравствуйте. Помогите пожалуйста конвертировать данные из файла .arc в файл .xls и .mdb(access). Здесь не вижу места куда приложить файлы для просмотра.

    Обсуждение закрыто.