Чтобы типы можно было преобразовывать во время выполнения программы, в VBA предусмотрены специальные функции – функции преобразования типов данных. Все они принимают в качестве аргумента значение типа Variant и возвращают значение соответствующего типа. Ниже приведен формат функций преобразования типов данных:
CBool(Выражение)
CByte(Выражение)
CCur(Выражение)
CDate(Выражение)
CDbl(Выражение)
CDec(Выражение)
CInt(Выражение)
CLng(Выражение)
CSng(Выражение)
CStr(Выражение)
CVar(Выражение)
Далее приведены примеры использования этих функций (переменная varRes имеет тип Variant, а переменная strRes – тип String):
varRes = CDec(12.4635246) / CDec(3.14169265359)
strRes = CStr(12.3535)
В результате выполнения приведенных инструкций переменная varRes будет содержать значение типа Decimal (использование функции CDec – это единственный способ оперировать с типом данных Decimal), а в переменную strRes будет записано значение «12.3535».
Примечание
При использовании функции CBool необходимо помнить, что к значению True преобразуется любое значение аргумента, не равное нулю. Передавать в функцию CBool разрешается только численные значения. Интересным образом также ведут себя инструкции преобразования к целочисленным типам Clnt, CLng и CByte при наличии дробной части в аргументе. Эти функции округляют дробное число до ближайшего целого четного числа.
Язык VBA поддерживает некоторые возможности для организации файлового ввода/вывода, рассмотрению которых посвящается данный раздел.
Для открытия файла в VBA существует специальная инструкция Open, формат которой приведен ниже:
Open Имя_файла For Тип_доступа [Access Режим_доступа] [Блокировка] _
As [#]Дескриптор [Len=Длина_записи]
В табл. 1.10 даны описания элементов, используемых в приведенной конструкции.
Таблица 1.10. Элементы инструкции Open
Ниже приведены примеры инструкций открытия файла D:\MyTextFile.txt для произвольного доступа, для последовательного чтения и записи:
Open «D:\MyTextFile.txt» For Random Access Read Write As 1 Len = 100
Open «D:\MyTextFile.txt» For Input As 2
Open «D:\MyTextFile.txt» For Output As 3
Дескрипторы файлов. Функция FreeFile
В среде программирования VBA открытые файлы идентифицируются номерами – дескрипторами. Дескриптор каждого открытого файла должен быть уникальным. Как было видно из примеров открытия файла, программист может сам назначать дескрипторы открываемым файлам (при этом необходимо учитывать, что допустимый диапазон значений дескриптора – 1-511).
Для небольших и простых программ возможность назначать дескрипторы вручную очень удобна. Однако в больших проектах, в которых ведется работа с многими файлами, бывает достаточно сложно следить за правильностью назначения дескрипторов вручную. Для избавления программиста от необходимости контролировать правильность дескрипторов в VBA введена специальная функция FreeFile, имеющая следующий формат:
FreeFile ([Диапазон])
Данная функция возвращает значение типа Long, которое можно использовать в инструкции Open в качестве дескриптора открываемого файла. Единственным параметром данной функции является необязательный параметр Диапазон, который может иметь значение 1 или 0. Если значение параметра равно 0 (по умолчанию), то функция возвращает дескриптор файла из диапазона 1-255. Если же оно равно 1 – значение из диапазона 256–511. Если свободных дескрипторов в диапазоне нет, то функция возвращает нулевое значение.
Ниже приведен пример использования функции FreeFile:
Dim hFile As Long
hFile = FreeFile ' Получение дескриптора для файла
' Открытие файла
Open «D:\MyTextFile.txt» For Output As hFile
После того как с открытым с помощью инструкции Open файлом выполнены необходимые действия, его нужно закрыть. Операция закрытия (или освобождения) является обязательной для всех объектов операционной системы, а не только для файлов. При закрытии файла освобождается его дескриптор, а другие приложения получают возможность работать с этим файлом, если он был заблокирован при открытии.
В VBA для закрытия файлов предусмотрены две инструкции: Reset и Close. Формат этих инструкций следующий:
Reset
Close [[#]Десктиптор [, [#]Дескриптор]...]
Читать дальше
Конец ознакомительного отрывка
Купить книгу