Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
объектная модель Excel.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.45 Mб
Скачать

Получение данных из закрытой рабочей книги

Для получения данных из закрытой рабочей книги можно воспользоваться методом 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)

Здесь: