
- •4.4. Массивы 73
- •5.1.4. Массивы 81
- •Введение
- •1. Основы языка программирования Visual Basic
- •1.1. Общие сведения о Visual Basic
- •1.2. Среда vb, инструментальные средства. Разработка проектов
- •1.3. Типы данных. Константы и переменные
- •1.4. Операции
- •1.5. Ввод и вывод данных
- •1.6. Управляющие операторы
- •1.7. Массивы
- •1.8. Примеры программ работы с числами
- •1.9. Обработка строк. Примеры
- •1.10. Математические вычисления. Другие операторы и функции
- •1.11. Процедуры и функции. Примеры
- •1.12. Работа с файлами
- •2. Основы vba
- •3. Практические задания
- •3.1. Практическое задание №1. Знакомство с vba
- •3.2. Практическое задание №2. Линейное программирование
- •3.3. Практическое занятие №3. Программирование ветвлений
- •3.4. Практическая работа №4. Программирование повторений
- •3.5. Практическая работа №5. Работа с массивами
- •3.6. Практическая работа №6. Процедуры и функции
- •3.7. Практическое занятие №7. Файлы. Последовательный доступ
- •3.8. Практическое занятие №8. Файлы с произвольным доступом
- •Задания самостоятельной работы
- •4.1. Линейное программирование
- •4.2. Программирование ветвлений
- •4.3 Программирования циклов
- •4.4. Массивы
- •4.5. Файлы
- •5. Задания для контрольной работы
- •5.1. Для студентов очной формы обучения
- •5.1.1. Линейное программирование
- •5.1.2. Программирование ветвлений
- •5.1.3. Программирование циклов
- •5.1.4. Массивы
- •5.2. Для студентов заочной формы обучения
- •Список литературы
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