Алексей Гладкий - Excel. Трюки и эффекты стр 12.

Шрифт
Фон

Excel. Трюки и эффекты

3. Для того чтобы определить тип объекта, на который указывает ссылка, допустимо использовать инструкцию TypeOf, имеющую следующий формат: TypeOf Ссылка Is Идентификатор_типа. Данная инструкция возвращает значение True, если ссылка с именем Ссылка указывает на объект, имя типа которого соответствует параметру Идентификатор_типа. В противном случае возвращается значение False. Например, если obj – ссылка на объект Worksheet, то в результате выполнения инструкции TypeOf obj Is Worksheet появится значение True.

Примечание

Инструкция TypeOf работает только для ссылок, имеющих значение, отличное от Nothing. Если в качестве параметра Идентификатор_типа используется Object, то результатом выполнения инструкции будет значение True независимо от типа объекта, на который указывает ссылка.

Преобразование типов

Чтобы типы можно было преобразовывать во время выполнения программы, в 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

Алексей Гладкий, Александр Чиртик - Excel. Трюки и эффекты

Алексей Гладкий, Александр Чиртик - Excel. Трюки и эффекты

Ниже приведены примеры инструкций открытия файла 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 [[#]Десктиптор [, [#]Дескриптор]...]

Инструкция Reset закрывает все файлы, открытые ранее с помощью инструкции Open. Инструкция Close закрывает только файлы с указанными дескрипторами, например:

Close 1, #3, hFile

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

Чтение из файлов и запись в файлы

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

Инструкции последовательного доступа

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

Таблица 1.11. Инструкции последовательного доступа к файлу

Excel. Трюки и эффекты

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке

Скачать книгу

Если нет возможности читать онлайн, скачайте книгу файлом для электронной книжки и читайте офлайн.

fb2.zip txt txt.zip rtf.zip a4.pdf a6.pdf mobi.prc epub ios.epub fb3