Материал: Программирование на языке Visual Basic для приложений. Подвальный С.Л., Рог А.И

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Продолжение табл. 6.1

vbDefaultButton3

512

Выделяется третья кнопка

 

 

 

vbDefaultButton4

768

Выделяется четвертая кнопка

 

 

 

 

vbApplicationModal

0

Модальность

приложения.

 

 

Блокируется работа с прило-

 

 

жением, пока пользователь не

 

 

закроет окно.

 

 

 

 

vbSystemModal

4096

Модальность системы. Блоки-

 

 

руется работа с системой, пока

 

 

пользователь не закроет окно.

 

 

 

vbMsgBoxHelpBut-

16384

Добавляет кнопку Help

ton

 

 

 

Нужное значение параметра кнопки можно получить сложением этих констант, причем допускается выбор не более чем одной константы из каждой группы. По умолчанию принимается значение этого параметра равное 0, что соответствует выбору трех констант с нулевыми значениями:

VbOkOnly + vbDefaultButtonl + vbApplicationModal

Продолжим описание параметров функции MsgBox. заголовок - это текст, который будет помещен в строку

заголовка диалогового окна. Если этот параметр опущен, то принимается заголовок с названием приложения, из которого данная функция была вызвана, например "Microsoft Excel";

файлСправки - это текстовая строка, определяющая файл справки для этого диалогового окна.

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

Для проверки возвращаемого значения также можно воспользоваться встроенными константами VBA.

88

Таблица 6.2 Константы, возвращаемые функцией MsgBox

Имя константы

Значение

Нажатая кнопка

 

 

 

VbOK

1

OK

 

 

 

VbCancel

2

Cancel

 

 

 

VbAbort

3

Abort

 

 

 

VbRetry

4

Retry

 

 

 

Vblgnore

5

Ignore

 

 

 

VbYes

6

Yes

 

 

 

VbNo

7

No

 

 

 

При всем многообразии возможностей функции MsgBox она, по большому счету, только выводит информацию (функция вывода). Конечно, она получает некоторую информацию в виде значения нажатой кнопки, но мы хотим большего, мы хотим вводить собственную информацию. Для этого используется стандартная функция ввода inputBox.

InputBox ( сообщение [, заголовок] _

[, значениеПоУмолчанию] [, позицияХ] [, позицияY] _ [, файлСправки, контекст])

Первые два и последние два параметра (сообщение, заголовок, и контекст) уже знакомы, и их назначение аналогично предыдущему случаю. Интерес представляют остальные параметры:

-значениеПоУмолчанию - это значение, которое автоматически появится в поле ввода; если этот параметр опущен, то в поле ввода будет пустая строка;

-позицияХ и позицияY - это расстояние от левого верхнего угла диалогового окна до левой и верхней границ экрана соответственно. Если этот параметр опущен, то окно будет выводиться по центру.

89

6.2. Процедуры и функции работы с файлами

Помимо визуального ввода и вывода посредством функций MsgBox и InputBox, часто требуется обращаться к данным, хранящимся в файлах пользователя. В VBA есть широкий набор процедур и функций для доступа данным файла, их чтению и записи. Работа с файлом начинается только после его открытия или создания посредством процедуры open.

Open имяФайла For способДоступа [Access доступ] _ [ограничение] Аs [#]номерФайла [Len = длинаЗаписи]

Параметр имяФайла - это строка, содержащая имя открываемого файла и путь к нему; если указание пути отсутствует, по умолчанию считается, что файл находится в текущей папке приложения. Если указанный файл не существует, то он создается.

После ключевого слова For идет параметр способДоступа, определяющий режим доступа к файлу. Его значением могут быть только следующие константы: Input, Output, Append, Random, Binary. Чтобы пояснить эти значения, необходимо рассказать о разнице в способах доступа к разным файлам.

В VBA существует три способа доступа к файлу:

1. Последовательный.

При таком доступе к файлу используются три режима доступа: Input (ввод или чтение), Output (вывод или запись), Append (присоединение или запись в конец). Подобный доступ не имеет определенных средств поиска информации. Чтобы ее найти, необходимо последовательно читать или писать все данные - сначала и до нужного места. Подобный доступ рационально применять для простых текстовых файлов.

2. Произвольный.

Данный доступ уместен, если файл состоит из записей постоянной длины, что позволяет эффективно работать с данными - быстро их находить, изменять, не переписывая весь файл. В этом случае параметр способДоступа должен иметь значение Random. Как правило, удобно применять данный

90

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

3. Бинарный.

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

Продолжим описание процедуры.

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

-Read (только чтение);

-Write (только запись);

-Readwrite (и чтение, и запись).

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

·Shared (без ограничений);

·Lock Read (блокировка чтения);

·Lock write (блокировка записи);

·Lock Readwrite (блокировка и чтения, и записи). Следующий параметр номерфайла - это целое число от 1

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

FreeFile.

Необязательный параметр длинаЗаписи - это число не больше 32767, задающее длину одной записи в байтах для произвольного доступа; размер буфера для последовательного доступа; параметр игнорируется для бинарного доступа.

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

и Reset.

91

Close [ [#] номерФайла] [, [#] номерФайла]...

Параметр номерФайла - это номер открытого файла. После его закрытия этот номер можно повторно использовать в процедуре Open. Если этих параметров нет, то закрываются все открытые файлы. Аналогично действует безаргументная функция Reset.

В следующем примере мы просто создадим текстовый файл с названием books и тут же закроем его.

Листинг. Открытие и закрытие файлов

Sub OpenFile() Dim fl

fl = FreeFile

Open "C:\books.txt" For Output As #fl Close #fl

End Sub

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

Последовательный доступ к файлу

Запись информации в файл осуществляется двумя процедурами Print и Write, в зависимости от последующего использования этих данных. Если данные будут использоваться в дальнейшем только для форматированного вывода на экран, то обычно используется процедура Print, если наоборот - данные будут в последующем считываться программно, - то рекомендуется использование процедуры Write.

Print #номерФайла [, списокВывода]

92

Источник: https://studfile.net/preview/16565567/