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

Ссылка на активную рабочую книгу, лист, ячейку, диаграмму и принтер

Свойства ActiveWorkbook, ActiveSheet, ActiveCell, ActiveChart, ActivePrinter объекта Application возвращают активную рабочую книгу, лист, ячейку, диаграмму и принтер. Объект ActiveCell содержится в ActiveSheet, а объекты ActiveSheet и ActiveChart и ActiveWorkbook.

В следующем примере (листинг 5.1) в активной ячейке устанавливается красный цвет фона с зеленым полужирным шрифтом и в нее вводится строка текста "Май". Активный рабочий лист переименовывается в отчет за май, а цвет его ярлыка назначается желтым.

Sub DemoActives()

With ActiveSheet

.Tab.Colorlndex = 27

' Желтый цвет

.Name = "Отчет за май"

End With

With ActiveCell

.Font.Bold = True

.Font.Color = vbGreen

' vbGreen — встроенная константа, задающая зеленый цвет

.Value = "Май"

.Interior.Color = vbRed

' vbRed — встроенная константа, задающая красный цвет

End With

End Sub

Загрузка инсталлированной надстройки

Свойство Addins объекта Application возвращает семейство инсталлированных надстроек. Например, в коде листинга 5.2 функция LoadAddin проверяет, установлена ли специфицированная надстройка (в данном случае Solver Addin). Эта функция возвращает значение:

  • 0, если надстройка загружена;

  • 1, если надстройка инсталлирована, но загрузить ее пришлось при помощи данной функции;

  • -1, надстройка не найдена;

  • -2, произошла ошибка при работе функции.

Напомним, что надстройку можно инсталлировать, выбрав команду Сервис►Надстройки.

Листинг 5.2. Проверка, установлена ли специфицированная надстройка

Function LoadAddin(AddlnTitle) As Integer

Dim ads As Addln

On Error GoTo ErrorHandler

For Each ads In Application.Addins

If ads.Title = AddlnTitle Then

LoadAddin = 0

If Not ads.Installed Then

Addins(AddlnTitle).Installed = True

LoadAddin = 1

End If

Exit Function

End If

Next

LoadAddln = -1

Exit Function ErrorHandler:

LoadAddln = -2

End Function

Sub TestO

MsgBox LoadAddln("Solver AddIn")

End Sub

Управление уровнем безопасности

Свойство AutomationSecurity объекта Application позволяет управлять уровнем безопасности при открытии рабочей книги. Это свойство возвращает одну из следующих MsoAutomationSecurity констант:

  • msoAutomationSecurityByUI — используется уровень безопасности, специфицированный диалоговым окном, отображаемым при открытии рабочей книги;

  • msoAutomationSecurityForceDisabie — отключает без предупреждаю­щего сообщения все макросы в открываемых рабочих книгах;

  • msoAutomationSecurityLow — все макросы включены.

Процедура из листинга 5.3 позволяет, используя диалоговое окно Open, открыть рабочую книгу с автоматическим отключением макросов. Для вызова диалогового окна Open применено свойство FileDialog объекта Application.

Листинг 5.3. Открытие рабочей книги с автоматическим отключением i макросов

Sub OpenWithMacrosOff()

Dim secAutomation As MsoAutomationSecurity

secAutomation = Application.AutomationSecurity

Application.AutomationSecurity = msoAutomationSecurityForceDisable

Application.FileDialog(msoFileDialogOpen).Show

Dim fn As String

fn = Application.FileDialog(msoFileDialogFilePicker).Selectedltems(1)

Application.Workbooks.Open fn

Application.AutomationSecurity = secAutomation

End Sub

Рабочая книга, в которой выполняется данный макрос

Свойство ThisWorkbook объекта Application возвращает рабочую книгу, содержащую выполняющийся в данный момент макрос. Это свойство может возвращать рабочую книгу, отличную от книги, возвращаемой свойством ActiveWorkbook, т. к. выполняемый макрос может находиться в неактивной книге.

Установка заголовка окна MS Excel

Свойство caption объекта Application возвращает или устанавливает текст в заголовке главного окна MS Excel. Задание значения свойства равным Empty возвращает заголовок, используемый по умолчанию. В следующем коде (листинг 5.4) из модуля ЭтаКнига первая процедура обрабатывает событие Open рабочей книги и устанавливает в качестве заголовка окна приложения текст "Отчет за 2005 год", а вторая обрабатывает событие BeforeClose рабочей книги и возвращает окну имя, используемое по умолчанию, т. е. "Microsoft Excel".

Private Sub Workbook_Open()

Application.Caption = "Отчет за 2005 год"

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Application.Caption = Empty

End Sub

Работа со строкой состояния

Свойство StatusBar объекта Application задает текст, отображаемый в строке состояния приложения. Если значение этого свойства равно False, то отображается текст, заданный по умолчанию. В следующем примере конструируется бегущая строка состояния (листинг 5.5). Эффект бега создается постепенным изменением количества пробелов, размещенных перед отображаемым текстом. Метод Wait объекта Application обеспечивает задержку выполнения приложения на указанный промежуток времени, в данном случае — секунду.

Листинг 5.5. Вывод бегущей строки в строку состояния

Function StatusString(ByVal LeftSpace As Integer, _

ByVal Message As String) As String

StatusString = Space(LeftSpace) & Message

End Function

Sub RunMessage()

Dim n As Integer

For n = 20 To 0 Step -1

Application.StatusBar = StatusString(n, "Hello!")

Application.Wait Now() + TimeValue("00:00:01")

DoEvents

Next

Application.StatusBar = False

End Sub

Отключение генерации событий

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

Application.EnableEvents = False

ActiveWorkbook.Save

Application.EnableEvents = True

Установка типа курсора

Свойство cursor объекта Application устанавливает тип курсора в приложении. Допустимые значения:

  • xlDefault — курсор, используемый по умолчанию;

  • xlWait — песочные часы;

  • xlNorthwestArrow — стрелка в северо-западном направлении;

  • xlIBeam — вертикальная полоска.

Если вы используете нестандартный курсор, например, для уведомления пользователя, что приложение не зависло, а идут вычисления, по завершении вычислений не забудьте установить курсор, используемый по умолчанию в системе. Например, следующий код находит сумму обратных величин квадратов целых чисел (листинг 5.6). Так как суммируется достаточно много чисел, на время суммирования курсор принимает вид песочных часов. По завершении суммирования курсору назначается вид, используемый по умолчанию.

Листинг 5.6. Видоизменение типа курсора для уведомления о проводимых вычислениях

Sub DemoCursor()

Dim s As Double

Dim i As Long

Application.Cursor = xlWait

s = 0

For i = 1 To 1000000

s = s + 1 / I ^ 2

Next

Application.Cursor = xlDefault

MsgBox s

End Sub

Видоизменять курсор можно не только при вычислениях, но и при любых других действиях, например, при выборе ячейки. В следующем коде из модуля рабочего листа при выборе ячейки А1 курсор превращается в указатель, направленный на северо-запад, а при выборе любой другой — он принимает тот вид, который используется в приложении по умолчанию (листинг 5.7).

Листинг 5.7. Видоизменение типа курсора при выборе специфицированной ячейки. Модуль рабочей книги

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Address = "$A$1" Then

Application.Cursor = xlNorthwestArrow

Else

Application.Cursor = xlDefault

End If

End Sub