Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на BASIC / Visual Basic / Visual Basic for Applications. Учебный практикум.doc
Скачиваний:
144
Добавлен:
02.05.2014
Размер:
827.9 Кб
Скачать

1.12. Работа с файлами

Файл – это поименованная область памяти на внешнем носителе (магнитный диск, лента и т.п.), содержащая некоторые данные или программу.

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

Реализуются три типа доступа к файлам: 1) последовательный (Sequential) – для чтения и записи текстовых файлов, 2) произвольный (Random) – для чтения и записи текста или структурированных двоичных файлов с записями фиксированной длины, 3) двоичный (Binary) – для чтения и записи произвольно структурированных файлов.

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

Open ИМЯ_ФАЙЛА For РЕЖИМ_РАБОТЫ As #НОМЕР_ФАЙЛА,

где – ИМЯ_ФАЙЛА – имя с расширением и маршрутом (полным путем); режимы работы: 1) Append: – файл открывается для помещения в него записей, если он уже содержит какие то записи, то новые помещаются в конец файла; 2) Input – файл открывается для чтения из него записей; 3) Output: – файл открывается для помещения в него записей; НОМЕР_ФАЙЛА – целое число между 1 и 255, предварительно определяемое с помощью функции FreeFile; обращение к файлу из программы выполняется под этим номером.

После того, как файл обработан, его закрывают командой Close #НОМЕР_ФАЙЛА.

Доступ к файлу возможен между командами Open и Close.

Для помещения записи в файл используется команда

Print #НОМЕР_ФАЙЛА, ПЕРЕМЕННАЯ [, ПЕРЕМЕННАЯ ]...

Для чтения записи из файла используются следующие команды:

1) чтение одной строки:

Line Input #НОМЕР_ФАЙЛА, str_Переменная

2) чтение всего файла в строковую переменную (strText):

strText = Input$ (LOF(НОМЕР_ФАЙЛА), НОМЕР_ФАЙЛА),

где LOF() – функция определения длины файла в байтах;

3) чтение последовательности определенного количества символов:

Input #НОМЕР_ФАЙЛА, ПОЛЕ_ДАННЫХ_1 [, ПОЛЕ_ДАННЫХ_2]...

Функция EOF(#НОМЕР_ФАЙЛА) возвращает логическое значение ИСТИНА (1), если достигнуто окончание файла, и значение ЛОЖЬ (0) – в противном случае.

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

Open ИМЯ_ФАЙЛА For Random [ Acces ДОСТУП ] As #НОМЕР_ФАЙЛА [Len = ДЛИНА_ЗАПИСИ],

где параметр Acces задает режим доступа к файлу: Read - чтение, Write - запись, Read Write - чтение и запись (без указания параметра также чтение и запись).

Для записи используется команда

Put #НОМЕР_ФАЙЛА, НОМЕР_ЗАПИСИ, ПЕРЕМЕННАЯ

для считывания команда

Get #НОМЕР_ФАЙЛА, НОМЕР_ЗАПИСИ, ПЕРЕМЕННАЯ

Открытие файла для двоичного доступа осуществляется командой

Open ИМЯ_ФАЙЛА For Binary [ Acces ДОСТУП ] As #НОМЕР_ФАЙЛА,

длина записи не указывается, т. к. обмен происходит побайтно; для ввода и вывода используются те же операторы Get и Put, но вместо номера записи указывается номер байта.

2. ОсновыVba

Предназначение VBA.

    • Действия в VBA осуществляются в результате выполнения кода VBA.

    • Вы создаете (или записываете) программу VBA, которая сохраняется в модуле VBA.

    • Модуль VBA состоит из процедур.

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

Sub Test()

Sum = 1 + 1

MsgBox "Ответ: " & Sum

End Sub

    • Кроме процедур Sub, в модуле VBA может использоваться второй тип процедур — функции.

Процедура функции возвращает одно значение (или массив). Функция может быть вызвана из другой процедуры VBA или использоваться в формуле рабочего листа. Далее приведен пример функции с названием AddTwo:

Function AddTwo(argl, arg2}

AddTwo = argl + arg2

End Function

    • VBA управляет объектами, которые представлены запускающим приложением (в .данном случае Excel).

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

    • Классы объектов организованы в иерархическую структуру.

Объекты могут быть контейнерами для других объектов. Например, Excel — это объект под названием Application , он содержит другие объекты, например, Workbook (Рабочая книга). Объект Workbook может состоять из других объектов, например, Worksheet (Рабочий лист) и C h a r t (Диаграмма). Объект Worksheet также содержит объекты, например. Range (Диапазон), Pivot Table (Сводная таблица) и т.д.

Организацию таких объектов называют объектной моделью Excel.

    • Одинаковые объекты формируют коллекцию.

Например, коллекция Worksheets состоит из всех рабочих листов конкретной рабочей книги, а коллекция CommandBars — из всех объектов CommandBar. Коллекции — это объекты в себе.

    • При ссылке на объект, вложенный в другой объект, положение в иерархической структуре объектной модели задается с помощью точки-разделителя.

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

Application.Workbooks("KHMral.xls")

Это ссылка на рабочую книгу KHMral.xls в коллекции Workbooks. Коллекция Workbooks находится в объекте Application. Переходя на следующий уровень, вы можете сослаться на лист Лист1 в книге Книга1.xls: Application.Workbooks("Книга1.xls").Worksheets("Jbtcrl")

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

Application.Workbooks("KHMral.xls").Worksheets("Лист1").Range("Al")

    • При опущенной ссылке на объект Excel по умолчанию используются активные объекты.

Если книга Лист1 — активная рабочая книга, то предыдущую ссылку можно упростить:

Worksheets("Лист!").Range("Al")

Если вы знаете, что лист Лист 1 — активный, то ссылку можно упростить еще больше:

Range("А1")

Объекты имеют свойства.

Свойство можно считать параметром илинастройкой объекта. Например, объект диапазона имеет такие свойства, какValue(Значение) иName(Имя), Объект диаграммы обладает такими свойствами, как H a s T i t l e (Заголовок) и Туре (Тип). Вы вправе использовать VBA, чтобы задать свойства объектов и их изменить.

Свойства в программном коде отделяются от названия объекта точкой.

Например, вы можете сослаться на значение в ячейке А1 листа Лист1 следующим образом:

Worksheets("Лист!").Range("Al").Value