Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая / Источники / excel_2010_professionalnoe_programmirovanie_na_vba_RuLit_Me_412629.pdf
Скачиваний:
4
Добавлен:
27.09.2025
Размер:
22.97 Mб
Скачать
з а п и с и
д л и н а _

Глава 27. Управление файлами с помощью VBA

795

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

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

П р и м е ч а н и е

Для чтения и записи данных в этой главе используется традиционный ме­ тод “канала данных”. Также можно воспользоваться объектным подходом. Объект F ile S yste m O b je ct включает объект TextStream , который может применяться для чтения и записи текстовых файлов. Объект F ile S y s te ­ mObj e c t является составной частью библиотеки Windows Scripting Host. Как упоминалось ранее, эта служба поддержки сценариев в большинстве сис­ тем отключена по причине ее склонности к распространению вирусов.

Открытие текстового файла

Функция VBA Open (не путайте с методом Open объекта A p p lic a t io n ) использу­ ется при открытии файла для чтения или записи. Перед тем как начать чтение или запись файла, его необходимо открыть.

Функция Open является очень гибким, поэтому она имеет относительно сложный синтаксис.

Open

путь

F or режим [Access

дост уп] [ блокировка] _

As

[#]

номер_файла [Len=

длина _ записи]

Путь (обязательный параметр). Аргумент пут ь оператора Open чрезвычайно

прост. Он включает имя и путь (необязательно) открываемого файла.

Режим (обязательный параметр). При открытии файлов используется один из сле­

дующих режимов:

A p p e n d — режим последовательного доступа, который позволяет осуществ­ лять чтение файла, а также добавлять данные в конец файла;

In p u t — режим последовательного доступа, который позволяет читать файл, но не дает возможности записывать в него данные;

O u tp u t — режим последовательного доступа, который позволяет выполнять чтение и запись файла. В этом режиме всегда создается новый файл (существующий файл с текущим именем удаляется);

B in a r y — режим произвольного доступа, в котором производится побайтовое чтение и запись данных;

Random — режим произвольного доступа, который позволяет выполнять чте­ ние и запись данных блоками, установленными значением аргумента

оператора Open.

796

Часть VII. Дополнительные темы

Д ост уп. Этот аргумент определяет допустимые операции над файлом (необязатель­

ный параметр). Этот параметр может иметь значения Read, W r ite и Read W rite .

Б л о к и р о в к а . Этот аргумент используется для разрешения проблем многопользова­

тельского доступа (необязательный параметр). Этот параметр может иметь следующие значения: Shared, L o ck Read, L o ck W rite , а также L o ck Read W rite .

Н ом ер_ф айла. Значение этого обязательного параметра находится в пределах от 1 до 511. Для получения следующего свободного номера файла можно использо­ вать функцию F r e e F ile . (Подробное описание этой функции можно найти в разделе “Получение номера файла”.)

Д л и н а _ з а п и с и . Этот параметр определяет длину записи (для файлов с произ­

вольным доступом) или размер буфера (для файлов с последовательным досту­ пом) и является необязательным.

Чтение текстового файла

Базовой процедурой чтения текстового файла с использованием VBA является сле­ дующая последовательность действий.

1.Открытие файла с помощью функции Open.

2.Указание позиции в файле с помощью функции Seek (не обязательно).

3. Чтение данных из файла с помощью операторов In p u t, I n p u t # или L in e I n p u t #.

4. Закрытие файла с помощью функции C lose.

Запись в текстовый файл

Базовая процедура записи текстового файла состоит из следующей последовательно­ сти действий.

1.Открытие или создание файла с помощью функции Open.

2.Указание позиции в файле с помощью функции Seek (не обязательно).

3. Запись данных в файл с помощью операторов W r ite # или P r i n t #.

4. Закрытие файла с помощью функции C lose.

Получение номера файла

Большинство программистов, использующих VBA, просто назначают номер файла при вызове функции Open.

Open " m y f ile . t x t " For In p u t As #1

Теперь в следующих операторах на этот файл можно ссылаться, как на #1.

Если открыт первый файл и вы открываете второй, то последний получит номер # 2 . Open " a n o th e r . tx t" For In p u t As #2

Еще одним методом является использование функции VBA F r e e F ile , которая по­ зволяет получить свободный дескриптор файла. После этого на файл можно ссылаться с помощью переменной. Приведем пример использования этой функции.

Глава 27. Управление файлами с помощью VBA

797

F ile H a n d le = F re e F ile

Open " m y f ile . t x t " For In p u t As F ile H a n d le

Определение или установка позиции в файле

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

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

В VBA имеются несколько операторов чтения и записи данных в файл. Представлен­ ные далее операторы используются для чтения данных из файла с последовательным доступом:

In p u t — читает из файла указанное количество символов;

I n p u t # — читает файл в виде последовательности переменных; переменные

разделяются запятой;

L in e In p u t # — читает файл построчно (строки разделяются символами воз­ врата каретки и/или перевода строки).

Для записи данных в файл с последовательным доступом используются два оператора.

W r ite # — записывает последовательность значений, в которой каждое значе­

ние отделено запятой и находится в кавычках. Если оператор завершается точкой с запятой, значения не будут разделяться символами “возврат каретки/перевод строки”. Данные, записанные с помощью оператора W r ite #, обычно читаются из файла с помощью оператора In p u t #.

P r in t # — записывает последовательность значений, в которой каждое значе­

ние отделено символом пробела. Если завершить оператор точкой с запятой, то после каждого значения не будет вставляться последовательность “возврат карет­ ки/перевод строки”. Данные, записанные с помощью оператора P r in t #, обычно читаются с помощью оператора L in e In p u t # или In p u t #.

Средства Excel им порта и эксп о р та ф айлов

ВExcel поддерживаются три типа текстовых файлов.

Файлы CSV (Comma Separated Values — разделенные запятыми значения).

Столбцы данных разделяются запятыми, а каждая строка данных завершается сим­ волом возврата каретки. В некоторых неанглийских версиях Excel вместо запятой используется точка с запятой.

Файлы PRN. Столбцы данных выравниваются по определенному символу, а каж­ дая строка завершается символом возврата каретки. Эти файлы также называются

файлами постоянной ширины.

Файлы TXT (Tab delimited — разделенные символами табуляции). Столбцы данных разделены с помощью символов табуляции, а каждая строка данных за­ вершается символом возврата каретки.

При попытке открытия текстового файла с помощью команды Файл^ХЭткрыть (File^ Open) открывается мастер импорта текста, с помощью которого можно определить способ разделения столбцов. Если в тексте в качестве разделителя используется сим­