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

Семейство встроенных диалоговых окон

Свойство 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