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

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 5 6 7 8 9 10 11 12 13 14

После создания ссылки сам объект создается с помощью инструкции Set:

Set obj = New Class1

Объявление переменной ссылки и создание объекта можно также совместить:

Dim obj As New Class1

Для доступа к свойствам и методам объекта используется точка, например:

obj.strTag = «Некоторый текст»

Set obj.ObjectRef = Nothing

MsgBox obj.ObjectType

obj.ShowInfo

Ниже приведен пример процедуры, которая использует реализованный класс

Class1:

Sub TestClass()

' Создание объекта

Dim obj As New Class1

' Установка свойств

Set obj.ObjectRef = New Collection

obj.strTag = "В этом объекте хранится ссылка на объект

Collection"

' Вызов метода

obj.ShowInfo

End Sub

В результате работы данной процедуры на экран будет выведено окно сообщения, показанное на рис. 1.4.

Рис. 1.4. Окно с информацией о свойствах объекта

Как можно заметить, в процедуре TestClass не происходит явного уничтожения ссылки на объект класса Class1. Дело в том, что ссылка obj – локальная переменная процедуры. А при выходе из процедуры данные всех локальных (не статических) переменных уничтожаются, в том числе удаляются и локальные ссылки на объекты.

Использование API-функций в VBA

Иногда даже при программировании на таком языке, как VBA, возникает необходимость использовать API-функции Windows. Эти стандартные функции действительно предоставляют программисту поистине огромные возможности – от управления отображением окон и кнопок до организации сетевого взаимодействия. Всего Windows API (Application Programming Interface) насчитывает около 1000 различных функций.

Объявление API-функций

Чтобы API-функцию можно было вызывать из программы на VBA, ее нужно объявить с использованием инструкции Declare:

[Public | Private] Declare Function Имя Lib «Библиотека» _

[Alias «Псевдоним»] [([Аргументы])] [As Имя_типа]

или, если API-функция не возвращает значения:

[Public | Private] Declare Sub Имя Lib «Библиотека» [Alias «Псевдоним»] _

[([Аргументы])]

Данная инструкция помещается в блоке объявлений модуля. Ключевые слова Public и Private задают область видимости объявляемой API-функции аналогично обычной процедуре или функции. Единственной особенностью является то, что при объявлении API-функции в модуле класса нужно использовать Private. Назначение остальных элементов инструкции Declare поясняется в табл. 1.14.

Таблица 1.14. Элементы инструкции Declare

Ниже приведен пример объявления API-функции получения имени текущего пользователя без использования псевдонима:

Declare Function GetUserNameA Lib «advapi32.dll» _

(ByVal lpBuffer As String, nSize As Long) As Long

а также с использованием псевдонима:

Declare Function GetUserName Lib «advapi32.dll» Alias

«GetUserNameA» _

(ByVal lpBuffer As String, nSize As Long) As Long

При использовании первой из приведенных инструкций для вызова функции нужно использовать имя GetUserNameA. При использовании второй – имя GetUserName.

Вызов API-функций

Вызов API-функций, объявленных с помощью инструкции Declare Function, ничем не отличается от вызова других функций: программист волен использовать инструкцию Call или употреблять функцию в выражениях. Если API-функция объявлена с использованием Declare Sub, то для вызова может применяться только инструкция Call (аналогично процедуре).

Для закрепления изложенного выше рассмотрим пример использования API-функции GetUserName для получения имени текущего пользователя компьютера:

' Объявление API-функции с использованием псевдонима

Declare Function GetUserName Lib «advapi32.dll» Alias

«GetUserNameA» _

(ByVal lpBuffer As String, nSize As Long) As Long

Sub UserName()

Dim strBuffer As String

' Создание строкового буфера для возврата значения функцией

strBuffer = Space(100)

' Получение имени пользователя (ВЫЗОВ API-ФУНКЦИИ). _

Функция возвращает ненулевое значение, если имя пользователя _

записано в strBuffer

If GetUserName(strBuffer, 100) Then

' Вывод имени пользователя

MsgBox RTrim(strBuffer)

Else

MsgBox «Не удалось получить имя пользователя»

End If

End Sub

Использование объектов Excel

Программирование на VBA в Microsoft Office чаще всего представляет собой управление объектами соответствующего приложения. Не является исключением и программирование в Excel. Данный раздел ознакомит читателя с основными объектами, встроенными в Excel. Эти объекты используются в подавляющем большинстве примеров (трюков), приведенных в дальнейших главах книги.

Объектная модель Excel

На рис. 1.5 представлена значительно упрощенная структура объектов, доступ к которым имеет программист на VBA.

Как видно из приведенного рисунка, корневым (главным) объектом, доступным в VBA, является Application. Используя ссылку на этот объект, можно манипулировать как самим запущенным приложением Excel, так и такими объектами, как рабочие книги, листы, диаграммы, окна, меню, панели инструментов, – Application предоставляет доступ ко всем объектам Excel.

Объект Application содержит большое количество вложенных объектов. Они могут быть и объектами, с которыми можно взаимодействовать непосредственно (как Assistant – объект для работы с помощником), и представлять собой коллекции, содержащие другие объекты.

Рис. 1.5. Структура объектов Microsoft Excel

Ниже приведено описание некоторых особенно часто используемых коллекций:

• Cells – коллекция, содержащая все ячейки рабочего листа;

• CommandBars – коллекция, содержащая все меню и панели инструментов;

• Comments – коллекция, содержащая все примечания рабочего листа;

• ChartObjects – коллекция, содержащая все объекты-контейнеры внедренных в рабочий лист диаграмм (по одному объекту на каждую внедренную диаграмму);

• Charts – коллекция, содержащая все листы диаграмм рабочей книги;

• Dialogs – коллекция стандартных диалоговых окон Excel;

• Sheets – коллекция, содержащая все листы книги;

• Windows – коллекция всех отображаемых в Excel окон;

• Workbooks – коллекция, содержащая все открытые в Excel рабочие книги;

• Worksheets – коллекция, содержащая все рабочие листы книги.

Объект Selection (а вернее, свойство объекта Application) предоставляет доступ к данным, выделенным на активном листе рабочей книги. В Selection могут содержаться ссылки на объекты различного типа. Тип зависит от того, что именно выделено на листе (например, если выделены ячейки, то тип объекта Selection – Range).

Особого рассмотрения заслуживает объект Range. Он может содержать одну ячейку, диапазон ячеек или несколько диапазонов ячеек. Этот объект используется при необходимости получения или изменения значений в ячейках таблицы.

Подробная информация о наиболее часто используемых в книге объектах Excel приведена в приложении.

Доступ к объектам Excel из программы

Для доступа к объектам Excel в программах на VBA можно использовать глобальную ссылку на объект Application, которая имеет такой же идентификатор – Application. Например, получение ссылки на выделенные данные может выглядеть следующим образом:

Set objSel = Application.Selection

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

Set objSel = Selection

Аналогичным образом осуществляется доступ к остальным объектам. При этом с коллекциями Excel, такими как Workbooks, Worksheets и пр., работают как с обычными коллекциями VBA, содержащими ссылки на объекты:

Worksheets(1).Name = «Sheet 1»

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

ActiveCell.Value = 15

или

ActiveSheet.Name = «This sheet is now activated»

Глава 2

Рабочая область Microsoft Excel

В данной главе мы рассмотрим порядок работы с основными элементами рабочей области Microsoft Excel – рабочей книгой, рабочим листом и ячейкой (диапазоном). Кроме того, здесь же поговорим о работе с формулами и пользовательскими функциями.

Рабочая книга

Как отмечалось ранее, рабочая книга представляет собой файл Microsoft Excel (обычно с расширением XLSX), в котором хранится и обрабатывается необходимая информация. Используя некоторые несложные приемы, можно расширить возможности рабочей книги. Об этом будет рассказано в текущем разделе.

Автозапуск любимого файла при загрузке Excel

Возможности программы предусматривают автоматический запуск требуемого файла одновременно с открытием Excel. Иначе говоря, при открытии Excel на экране отобразится не пустая рабочая книга (как обычно), а содержимое конкретного файла. Для достижения такого эффекта необходимо поместить требуемый файл в каталог автоматической загрузки – XLStart. Этот каталог расположен в папке с файлами Microsoft Office (например, по адресу С: Program FilesMicrosoft OfficeOffice12XLSTART). При необходимости можно поместить в указанный каталог несколько файлов – в результате при запуске Excel они автоматически будут открыты в разных окнах. Однако для настройки автоматического запуска нескольких файлов удобнее выполнить следующие действия.

1 ... 5 6 7 8 9 10 11 12 13 14
На этом сайте Вы можете читать книги онлайн бесплатно русская версия Excel. Трюки и эффекты - Алексей Гладкий.

Оставить комментарий