
- •Объектная модель
- •Полная и неявная ссылка на объект
- •Ссылка на активную рабочую книгу, лист, ячейку, диаграмму и принтер
- •Загрузка инсталлированной надстройки
- •Управление уровнем безопасности
- •Семейство встроенных диалоговых окон
- •Объект FileDialog
- •Методы объекта Application
- •Установка выполнения специфицированной процедуры при нажатии заданной комбинации клавиш
- •Переопределение горячих клавиш приложения
- •Проверка правописания отдельного слова
- •Симулирование ячеек рабочего листа
- •Электронные часы в ячейке рабочего листа
- •Получение данных из закрытой рабочей книги
- •События объекта Application
- •IgnoreReadOnlyRecommended — необязательный параметр, указывающий надо ли отображать предупреждение о том, что книга была сохранена в режиме "только для чтения";
- •Установка и снятие защиты книги
- •Методы объекта Worksheet
- •Объект Protection
- •События объекта Worksheet
- •Добавление к графическому объекту обработчика события Click
- •Примечание
- •Свойства объекта Range
- •Управление стилем границы диапазона и объекта Border
- •Функции rgb и qbColor
- •Доступ к отдельным ячейкам диапазона
- •Выбор элементов на рабочем листе или в книге
- •Объект Characters
- •Объект Comment
- •Определение текущего диапазона
- •Объект Font
- •Объект Interior
- •Установка числового формата
- •Переопределение размеров диапазона
- •Методы объекта Range
- •Табуляция функции
- •Заполнение диапазона по одному значению
- •Специальная вставка
- •Вставка диапазона с транспонированием
- •Бегущая картинка
- •Поиск значения в диапазоне
- •Повторный поиск и поиск всех значений
- •Поиск по формату
- •Замена значений
- •Ввод в диапазон неповторяющихся значений
- •Озвучивание текста
- •Построение графа
- •Пользовательские функции
- •Математические функции
- •Надстройки
- •Где хранятся макросы?
Семейство встроенных диалоговых окон
Свойство Dialogs возвращает семейство Dialogs всех встроенных диалоговых окон. Параметр этого семейства идентифицирует окно. Метод Show отображает его на экране, а параметры этого метода задают параметры, специфицируемые в отображаемом окне. Метод Show возвращает значение True, если задача, поставленная в отображаемом окне, была выполнена успешно. Например, следующий код отображает окно Открытие документа для открытия книги C:\Test.xls (листинг 5.8).
Листинг 5.8. Открытие специфицированного документа с помощью окна Открытие документа
Sub DemoDialogs()
Dim idx As Long
idx = Application.Dialogs(xlDialogOpen).Show("c:\test.xls")
If idx Then
MsgBox "Файл открыт"
Else
MsgBox "Файл не открыт"
End If
End Sub
Объект FileDialog
Объект FileDialog, возвращаемый свойством FileDialog объекта Application, предоставляет в распоряжение разработчика диалоговые окна Открыть и Сохранить как. Свойство FileDialog имеет один параметр DiaiogType, задающий и тип окна. У этого параметра имеются четыре допустимых значения:
msoFiieDialogFiiePicker — предоставляет возможность пользователю выбрать файл;
msoFileDialogFolderPicker — обеспечивает выбор папки;
msoFiieDiaiogOpen — позволяет открыть выбранный файл. Открытие файла производится методом Execute;
msoFileDiaiogSaveAs — разрешает пользователю сохранить файл. Сохранение файла производится методом Execute.
Для отображения окна, симулируемого объектом FileDialog, необходимо воспользоваться методом Show. Этот метод возвращает значение 0, если нажата кнопка Отмена, и значение -1, если нажата другая функциональная кнопка. Для окон Открыть и Сохранить как после применения метода Show надо воспользоваться методом Execute для реализации выбранной команды.
В коде листинга 5.9 демонстрируется техника сохранения и загрузки файлов при помощи окон Открыть и Сохранить как, а именно в процедуре LoadFiles1 — окна типа msoFileDialogFilePicker, в процедуре LoadFiles2 — окна типа msoFileDialogOpen, а в процедуре LoadFiles1 — окна типа msoFileDialogSaveAs.
Листинг 5.9. Открытие и сохранение документов с помощью окон Открыть и Сохранить как
Sub LoadFiles1()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
Dim itm As Variant
With fd
If .Show = -1 Then
For Each itm In .Selectedltems
Workbooks.Add itm
Next
End If
End With
Set fd = Nothing End Sub
Sub LoadFile2()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogOpen)
If fd.Show = -1 Then
fd.Execute
Else
MsgBox "Выбрали отмену"
End If
Set fd = Nothing
End Sub
Sub SaveFile3()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogSaveAs)
If fd.Show = -1 Then
fd.Execute
Else
MsgBox "Выбрали отмену"
End If
Set fd = Nothing
End Sub
Отображение встроенных предупреждений о работе программы
Свойство DisplayAlerts объекта Application устанавливает, надо ли отображать встроенные предупреждения о работе программы. Например, следующая процедура (листинг 5.10), обрабатывающая событие Open объект; Workbook, отменяет отображение предупреждений при работе с книгой.
Private Sub Workbook_Open()
Application.DispiayAierts = False
End Sub
Поиск файлов
Свойство FileSearch объекта Application возвращает объект FileSearch, который инкапсулирует в себе свойства и методы, реализующие поиск специфицированного файла на диске. Перечислим основные свойства объекта FileSearch:
свойство Lookin возвращает или устанавливает каталог, в котором производится поиск;
свойство FileType возвращает или устанавливает тип искомого файла. Его допустимым значением может быть одна из следующих MsoFileType-постоянных:
msoFileTypeAHFiles
msoFileTypeBinders
msoFileTypeCalendarltem
msoFileTypeContactltem
msoFileTypeCustom
msoFileTypeDatabases
msoFileTypeDataConnectionFiles
msoFileTypeDesignerFiles
msoFileTypeDocumentImagingFiles
msoFileTypeExcelWorkbooks
mSoFileTypeJournalItern
msoFileTypeMailitem
msoFileTypeNoteltem
msoFileTypeOfficeFiles
msoFileTypeOutlooklterns
msoFileTypePhotoDrawFiles
msoFileTypePowerPointPresentations
msoFileTypeProjectFiles
msoFileTypePublisherFiles
msoFileTypeTaskltem
msoFileTypeTemplates
msoFileTypeVisioFiles
msoFileTypeWebPages
msoFileTypeWordDocuments
свойство FoundFiles возвращает объект FoundFiles, представляющий собой список имен всех найденных в течение поиска файлов.
Метод Execute объекта FileSearch производит непосредственный поиск. Он возвращает целое число, причем, если оно равно 0, то ни одного файла не было найдено, и положительное число, если, по крайней мере, один файл найден:
Execute(SortBy, SortOrder, AlwaysAccurate)
Здесь:
SortBy — необязательный параметр, определяющий критерий сортировки найденных файлов. Допустимые значения определяются следующими MsoSortBy-постоянными:
msoSortByFileName msoSortByFileType msoSortByLastModified msoSortByNone msoSortBySize
SortOrder — необязательный параметр, определяющий порядок сортировки. Допустимые значения определяются следующими MsoSortorder- постоянными:
msoSortOrderAscending, msoSortOrderDescending;
AlwaysAccurate — необязательный параметр, принимающий логические значения и определяющий, должны ли при поиске просматриваться те файлы, которые были добавлены, модифицированы или удалены после последней модификации файлового индекса.
В приводимом ниже примере производится поиск всех рабочих книг в корневом каталоге диска С:. Если таковые имеются, то отображается сообщение с указанием их количества и полным списком имен. Если же их нет, то пользователь также об этом информируется.
With Application.FileSearch .Lookln = "c:\"
.FileType = msoFileTypeExcelWorkbooks
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
Dim str As String
str = "Найдено " & .FoundFiies.Count & " книг(и):" & vbCr
Dim i As Integer
For i = 1 To .FoundFiies.Count
str = str & .FoundFiies(i) & vbCr
Next
MsgBox str
Else
MsgBox "Рабочие книги не найдены."
End If
End With
Печать активного листа
Печать активного листа рабочей книги производится методом PrintOut. Для того чтобы получить ссылку на активный лист, воспользуйтесь свойством ActiveSheet объекта Application.
ActiveSheet.PrintOut
Предварительный просмотр книги
Предварительный просмотр рабочей книги реализуется методом PrintPreview семейства sheets. Если у свойства Sheets объекта Application не указывается значение индекса, то производится просмотр всей книги.
Application.Sheets.PrintPreview
Если же у свойства Sheets индекс специфицирован, то осуществляется просмотр указанного листа, например, в следующей инструкции — первого.
Application.Sheets(l).PrintPreview
Доступ из кода к функциям рабочего листа
Объект Application через свойство WorksheetFunction предоставляет возможность использовать в коде все встроенные функции рабочего листа. Это свойство возвращает WorksheetFunction-объект, являющийся контейнером всех функций рабочего листа. Например, в следующей инструкции переменной MaxValue присваивается максимальное значение из диапазона А1:А4:
Dim MaxValue As Double
MaxValue = Application.WorksheetFunction.Max(Range("A1:A4"))
Примечание
Функции рабочего листа можно включать в код непосредственно через объект Application, опуская свойство WorksheetFunction. Например, в следующем примере переменной Pi присваивается значение π, а переменной Сумма присваивается сумма значений из диапазона А1:А4:
Pi = Application.Pi()
Сумма = Application.Sum(Range("A1:A4"))
Но хотя приводимые инструкции короче, их применение не всегда удобно. Дело в том, что после ввода в модуле Application.WorksheetFunction на экране отображается список с функциями рабочего листа, в то время как после ввода Application список с функциями рабочего листа не появляется. Поэтому, если вы точно знаете имя вводимой функции, то второй способ вполне приемлем. Если же вы не уверены в имени, то у первого способа нет альтернативы.
Номер версии MS Excel
Свойство Version объекта Application возвращает номер текущей версии MS Excel. Используется для проверки, применяется ли корректная версия. Например, следующая инструкция проверяет версию MS Excel, и если она отлична от 11.0, то происходит выход из процедуры.
If Application.Version <> "11.0" Then Exit Sub
Определение локальной версии MS Excel и установок Windows
Определение локальной версии Excel и установок Windows возможно при помощи свойства International объекта Application, например, как показано в листинге 5.11. Если значение параметра этого свойства равно xlCountrySetting, то идентифицируется локализация установок Windows, a если равно xlCountryCode, то Excel.
Листинг 5.11. Определение локальной версии MS Excel и установок Windows
Sub DemoCheck()
Checklnternational Application.International(xlCountrySetting), _
"Версия Windows"
Checklnternational Application.International(xlCountryCode), _
"Версия Office"
End Sub
Sub Checklnternational(n As Integer, msg As String)
Select Case n
Case 1
msg = msg + " Английская (США)"
Case 7
msg = msg + " Русская"
Case 49
msg = msg + " Немецкая (Германия)"
Case Else
msg = msg + " не учтена"
End Select
MsgBox msg
End Sub