
- •Объектная модель
- •Полная и неявная ссылка на объект
- •Ссылка на активную рабочую книгу, лист, ячейку, диаграмму и принтер
- •Загрузка инсталлированной надстройки
- •Управление уровнем безопасности
- •Семейство встроенных диалоговых окон
- •Объект FileDialog
- •Методы объекта Application
- •Установка выполнения специфицированной процедуры при нажатии заданной комбинации клавиш
- •Переопределение горячих клавиш приложения
- •Проверка правописания отдельного слова
- •Симулирование ячеек рабочего листа
- •Электронные часы в ячейке рабочего листа
- •Получение данных из закрытой рабочей книги
- •События объекта Application
- •IgnoreReadOnlyRecommended — необязательный параметр, указывающий надо ли отображать предупреждение о том, что книга была сохранена в режиме "только для чтения";
- •Установка и снятие защиты книги
- •Методы объекта Worksheet
- •Объект Protection
- •События объекта Worksheet
- •Добавление к графическому объекту обработчика события Click
- •Примечание
- •Свойства объекта Range
- •Управление стилем границы диапазона и объекта Border
- •Функции rgb и qbColor
- •Доступ к отдельным ячейкам диапазона
- •Выбор элементов на рабочем листе или в книге
- •Объект Characters
- •Объект Comment
- •Определение текущего диапазона
- •Объект Font
- •Объект Interior
- •Установка числового формата
- •Переопределение размеров диапазона
- •Методы объекта Range
- •Табуляция функции
- •Заполнение диапазона по одному значению
- •Специальная вставка
- •Вставка диапазона с транспонированием
- •Бегущая картинка
- •Поиск значения в диапазоне
- •Повторный поиск и поиск всех значений
- •Поиск по формату
- •Замена значений
- •Ввод в диапазон неповторяющихся значений
- •Озвучивание текста
- •Построение графа
- •Пользовательские функции
- •Математические функции
- •Надстройки
- •Где хранятся макросы?
Получение данных из закрытой рабочей книги
Для получения данных из закрытой рабочей книги можно воспользоваться методом ExecuteExcel4Macro объекта Application, который запускает макрос MS Excel 4.0 и возвращает результат его выполнения (листинг 5.19). При этом надо помнить, что в данном методе ссылка на макрос должна всегда быть полной и включать как ссылку на книгу, так и рабочий лист. Если же в нем указана ссылка на ячейку, то возвращается значение ячейки.
Function GetValueFromClosed(path As String, file As String, _
sheet As String, ref As String) As String
Dim arg As String
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValueFromClosed = "File Not Found"
Exit Function
End If
arg = Chr(39) & path & "[" & file S "]" & sheet & Chr(39) & "!" & _
Range(ref).Range("A1").Address(ReferenceStyle:=xlR1C1)
GetValueFromClosed = Application.ExecuteExcel4Macro(arg)
End Function
События объекта Application
Прежде чем применить событие объекта Application, необходимо создать модуль класса и там объявить объект типа Application, причем в объявлении использовать ключевое слово withEvents, например, как сделано в следующем коде (листинг 5.20, а). Кроме того, переименуйте модуль класса из безликого Class1, например, В MyAppWithEvent.
Листинг 5.20. а. Объявление объекта типа Application. Модуль класса
Public WithEvents App As Application
После этого имя объекта Арр будет добавлено в список объектов, приводимый в списке General модуля класса. В списке Declarations приводятся ассоциированные с ним события. Например, следующий код (листинг 5.20, б) реализует обработку двух событий — WorkbookActivate и WorkbookDeactivate, генерируемых при активизации и деактивизации рабочей книги.
Листинг 5.20, б. Процедуры, обрабатывающие события объекта типа
Private Sub App_WorkbookActivate(ByVal Wb As Workbook)
MsgBox "Книга " & Wb.Name & " активизирована"
End Sub
Private Sub App_WorkbookDeactivate(ByVal Wb As Workbook)
MsgBox "Книга " & Wb.Name & " деактивизирована"
End Sub
Теперь для того чтобы процедура, обрабатывающая событие, исполнялась, остается объявить объект типа- MyAppwithEvent, например, как это делается в коде листинга 5.20, в.
Листинг 5.20, е. Объявление объекта типа MyAppWithEvent.
Модуль ЭтаКнига
Dim a As New MyAppWithEvent
Private Sub Workbook_Open()
Set a.App = Application
End Sub
В заключение в табл. 5.3 перечислим события, связанные с объектом Application.
Таблица 5.3. События объекта Application
-
Событие
Описание
NewWorkbook
Создание новой рабочей книги
SheetActivate
Активизация листа. Может быть как рабочий лист, так и лист с диаграммой
SheetBeforeDoubleClick
Двойной щелчок на рабочем листе
SheetBeforeRightClick
Щелчок правой кнопкой мыши на рабочем листе. Событие происходит до того, как генерируется определенное по умолчанию аналогичное событие. Если значение параметра Cancel процедуры обработки этого события установить равным True, то определенное по умолчанию действие не выполняется
SheetCalculate
Пересчет на рабочем листе или изменение данных в диаграмме
SheetChange
Изменение данных в ячейках рабочего листа
SheetDeactivate
Деактивизация листа. Может быть как рабочий лист, так и лист с диаграммой
SheetFollowHyperlink
Щелчок на гиперссылке
SheetPivotTableUpdate
Обновление сводной таблицы
SheetSelectionChange
Смена выделения на рабочем листе
WindowActivate
Активизация окна
WindowDeactivate
Деактивизация окна
WindowResize
Изменение размеров окна
WorkbookActivate
Активизация рабочей книги
WorkbookAddinlnstall
Инсталляция надстройки
WorkbookAddinUninstall
Удаление надстройки
WorkbookBeforeClose
Перед закрытием рабочей книги. Если значение параметра Cancel процедуры обработки этого события установить равным True, то по завершении ее работы книга не закроется
WorkbookBeforePrint
Перед печатью рабочей книги
WorkbookBeforeSave
Перед сохранением рабочей книги
WorkbookDeactivate
Деактивация рабочей книги
WorkbookNewSheet
Добавление нового листа в рабочую книгу
WorkbookOpen
Открытие рабочей книги
WorkbookPivotTableCloseConnection
Закрытие связей со сводной таблицей
WorkbookPivotTableOpenConnection
Установка связей со сводной таблицей
Семейство Workbooks
Семейство Workbooks инкапсулирует в себе все рабочие листы рабочей книги. В этом семействе имеются два основных свойства: свойство count возвращает число элементов семейства, а свойство Item — конкретный элемент семейства. Методы семейства Workbooks позволяют открывать существующую книгу (метод Open), закрыть ее (метод Close), создавать новую книгу (метод Add), причем как пустую, так и заполненную на основе данных либо из текстового файла (метод OpenText), либо из XML-файла (метод OpenXML), либо из базы данных (метод OpenDatabase).
Создание новой рабочей книги
Метод Add семейства Workbooks создает новую рабочую книгу.
Add(Template)
Здесь Template — необязательный параметр, определяющий, какой будет создана новая книга. В качестве значения этого параметра можно указать:
имя файла, который будет использован в качества шаблона для создаваемой книги;
одну из следующих постоянных XlWBATemplate: xlWBATChart, xlWBATExcel4IntlMacroSheet, xlWBATExcel4MacroSheet, xlWBATWorksheet.
Если этот параметр опущен, то создается рабочая книга с числом листов, заданных свойством SheetsInNewWorkbook.
Открытие рабочей книги
Метод Open семейства Workbooks открывает указанную рабочую книгу.
Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, _
IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, _
Notify, Converter, AddToMru, Local, CorruptLoad, OpenConflictDocument)
Здесь: