- •Оглавление
- •1. Основные этапы решения задач на эвм
- •2. Элементы управления и пользовательская форма vba
- •2.1 Элементы управления
- •2.2 Режим конструктора
- •2.3 Установка свойств элемента управления
- •2.4 Редактор кода
- •2.5 Пользовательская форма UserForm
- •2.5.1 Семейство Controls
- •2.5.2 Создание пользовательской формы
- •2.6 Общие свойства элементов управления
- •2.6.1 Соглашения об именах
- •2.7 Общие методы и события элементов управления
- •2.8 Стандартные объекты и элементы управления
- •2.8.1 Объект DataObject
- •2.8.2 Поле
- •2.8.3 Надпись
- •2.8.4 Кнопка
- •2.8.5 Список
- •2.8.6 Поле со списком
- •2.8.7 Полоса прокрутки и счетчик
- •2.8.8 Переключатель
- •2.8.9 Рамка
- •2.8.10 Флажок и выключатель
- •2.8.11 Рисунок
- •2.8.12 Ссылки на ячейки и диапазоны
- •2.8.13 Набор страниц
- •2.8.14 Набор вкладок
- •2.9 Последовательность выбора элементов управления
- •2.10 Диалоговые окна
- •2.10.1 Инициализация и отображение диалогового окна
- •2.10.2 Закрытие диалогового окна
- •2.10.3 Отображение встроенных диалоговых окон
- •3. Типы данных, переменные и константы
- •3.1 Типы данных
- •3.2 Описание переменных
- •3.2.1 Допустимые имена
- •3.3 Константы
- •3.4 Комментарии
- •4. Операции vba
- •4.1 Математические операции
- •4.2 Операции отношения
- •4.3 Логические операции
- •4.4 Операции со строками
- •4.5 Приоритеты операций
- •4.6 Встроенные функции vba
- •4.7 Функции преобразования форматов
- •4.7.1 Функции обработки строк
- •4.8 Инструкции vba
- •4.8.1 Оператор присваивания
- •4.8.2 Расположение нескольких операторов на одной строке
- •5. Ввод и вывод информации
- •6. Реализация разветвляющихся алгоритмов в vba
- •7. Операторы цикла
- •8. Массивы
- •9. Подпрограммы
- •9.1 Процедуры
- •9.2 Переход в подпрограмму и возвращение из подпрограммы
- •9.3 Вызов процедуры
- •9.4 Область определения переменной
- •9.5 Время жизни переменной
- •9.6 Рекурсивные процедуры
- •10. Работа с файлами
- •10.1 Типы файлов в vba
- •10.2 Открытие и закрытие файла
- •10.3 Ввод данных в файл последовательного доступа
- •10.4 Вывод данных из файла последовательного доступа
- •10.5 Работа с файлом произвольного доступа
- •10.6 Наиболее употребляемые инструкции и функции при работе с файлами
- •11. Примеры решения задач и порядок разработки программ
- •11.1 Линейный алгоритм
- •11.2 Разветвляющийся алгоритм
- •11.3 Циклический алгоритм
- •11.4 Одномерный массив
- •11.5 Вложенные циклы. Двумерные массивы
- •11.6 Файлы произвольного доступа
- •12. Практические задания
- •12.1 Линейный алгоритм: вычисление арифметического выражения
- •12.2 Линейный алгоритм: вычисление по математическим и физическим формулам
- •12.3 Разветвляющийся алгоритм: выбор по условию
- •12.4 Циклический алгоритм: цикл с параметром
- •12.5 Циклический алгоритм: цикл с предусловием
- •12.6 Циклический алгоритм: цикл с постусловием
- •12.7 Одномерные массивы (векторы)
- •12.8 Вложенные циклы. Двумерные массивы (матрицы)
- •12.9 Массивы: сортировка, поиск минимального (максимального) элемента
- •12.10 Строковый тип данных
- •12.11 Файлы произвольного доступа
- •12.12 Файлы последовательного доступа
- •12.13 Подпрограммы пользователя (процедуры)
- •12.14 Подпрограммы пользователя (функции)
- •Библиографический список
10.4 Вывод данных из файла последовательного доступа
В VBA имеются следующие инструкции и функции вывода информации из файла последовательного доступа, а также функцию идентификации конца файла.
Input # Считывает данные из открытого файла последовательного доступа и присваивает их переменным. Данные, считываемые с помощью инструкции Input #, обычно записываются в файл с помощью инструкции Write #. Синтаксис:
Input #НомерФайла, СписокПеременных
НомерФайла – номер файла
СписокПеременных – список переменных, следует присвоить значения, считанные из файла. Переменные в списке разделяются запятыми.
Line Input # Считывает строку из открытого файла последовательного доступа и присваивает ее переменной типа String. Данные, считываемые с помощью инструкции Line Input #, как правило, записываются в файл с помощью инструкции Print #. Синтаксис:
Line Input #НомерФайла, ИмяПеременной
Синтаксис инструкции Line Input # содержит следующие элементы:
НомерФайла – номер файла;
ИмяПеременной – имя переменной типа Variant или String.
Функция EOF – Функция возвращает значение True при достижении конца файла. Синтаксис:
EOF(НомерФайла)
При последовательном считывании информации из файла часто используется следующий цикл:
Do While Not EOF(l) Loop
или, для тех пользователей, кто предпочитает инструкцию
While - Wend инструкции Do While - Loop, следующий эквивалентный цикл:
While Not EOF(l) Wend
Функция Input – возвращает значение типа String, содержащее символы из файла, открытого в режиме Input или Binary. Функция Input считывает данные, записываемые в файл с помощью инструкции Print # или Put. Синтаксис:
Input(Число, [#]НомерФайла)
Число задает число возвращаемых символов. Если аргумент число равен 1, то производится посимвольное считывание данных.
Приведем пример использования инструкции Input # для считывания данных из файла. В этом примере предполагается, что на диске существует файл ГруппаЭкономистов, содержащий информацию о студентах. Файл был создан при помощи инструкции Write # и состоит из двух столбцов, в первом из которых указывается фамилия, а во втором – оценка студента. Для удобства работы с информацией введен пользовательский тип Студенты. Процедура ПримерИспользованияInput последовательно считывает фамилии и оценки из файла и выводит их в ячейки первого и второго столбца рабочего листа.
Type Студенты
Фамилия As String * 20
Оценка As String * 3
End Type
Sub ПримерИспользованияInput
Dim Студент As Студенты
Open "ГруппаЭкономистов" For Input As #2
i = 1
Do While Not EOF(2) With Студент
Input #2, .Фамилия, .Оценка
Cells (i, 1).Value = .Фамилия
Cells(i, 2).Value = .Оценка
End With
i = i + 1
Loop
Close #2
End Sub
Приведем пример использования инструкции Line Input # для считывания данных из файла ГруппаЭкономистов, имеющего ту же структуру, что и в предыдущем примере, но созданного с помощью инструкции Print #. Инструкция Line input # считывает всю строку из файла в строковую переменную. Поэтому в этом случае уже нет необходимости использовать введенный пользовательский тип, а достаточно ограничиться только обычной строковой переменной. Вся считываемая информация строка за строкой вводится список диалогового окна.
Private Sub UserForm_Initialize()
Dim Студент As String
Open "ГруппаЭкономистов" For Input As #1
i = 1
With ListBoxl
.Clear
Do While Not EOF(1)
Line Input #1, Студент
.AddItem Студент
i = i + 1
Loop
Close #1
End With
End Sub