Основы офисного программирования и язык VBA

         

Коллекция Dialogs и объект Dialog


Рассматривая общие объекты, используемые при организации пользовательского интерфейса, нельзя не упомянуть коллекцию Dialogs, которую можно использовать в приложениях Word и Excel. Элементы этой коллекции - объекты класса Dialog представляют встроенные в приложение диалоговые окна, появляющиеся по ходу работы с документами. Из этой коллекции ничего нельзя удалить и ничего в нее нельзя добавить. В любой момент можно только открыть любое из существующих встроенных диалоговых окон и предоставить пользователю возможность работы с ним, например, открыть файл или организовать поиск нужной информации. Чтобы добраться до нужного диалогового окна, используется обычная конструкция: Dialogs (<имя окна>), где имя окна задается константой. Все имена констант строятся по одному принципу, - они начинаются с префикса wdDialog или xlDialog (для Word и Excel соответственно), а затем идет имя окна. В приложении Word это полное имя, включающее все меню, которые надо открыть при вызове диалогового окна "вручную". Так, например, для открытия диалогового окна "Open" из меню File в приложении Word следует вызвать метод Show следующим образом:

Dialogs(wdDialogFileOpen).Show

Сразу же появится окно:


увеличить изображение
Рис. 12.1.  Диалоговое окно открытия файла

В Excel этот же вызов будет иметь вид:

Application.Dialogs(xlDialogOpen).Show

Заметьте, что в первом случае - это глобальный объект и поэтому его можно вызывать непосредственно, в Excel же необходимо указание корневого объекта Application, чье свойство Dialogs и возвращает коллекцию Dialogs. Но зато в Excel достаточно короткого имени для вызова диалогового окна. Метод Show открывает диалоговое окно и позволяет пользователю работать в нем. В зависимости от того, какую кнопку нажал пользователь при выходе из окна, возвращается результат: в Excel это True или False (нажаты кнопки OK или Cancel), в Word можно точнее проанализировать, какая кнопка была нажата. Метод Show - основа работы с диалоговыми окнами, по сути больше ничего и не нужно: в нужный момент открывается нужное диалоговое окно, пользователь работает в нем и по закрытии можно понять, успешно ли закончилась его работа.


Тем не менее, Word предоставляет некоторые дополнительные возможности. В частности, наряду с методом Show, можно применять метод Display, отличающийся тем, что хотя окно и открывается, но ввод от пользователя оно принять не может и используется только в информационных целях. Word позволяет также создавать объекты класса Dialog и программно устанавливать значения полей диалогового окна, еще до того, как оно будет показано пользователю, беря тем самым на себя часть его работы. Метод Execute позволяет эти установки зафиксировать. Вот пример, в котором делаются некоторые установки в диалоговом окне Replace:

Public Sub Dialogs2() Dim MyDialog As Dialog, Answer As Variant Set MyDialog = Dialogs(wdDialogEditReplace) MyDialog.Find = "коллекция" MyDialog.Replace = "семейство" MyDialog.FuzzyFind = True Answer = MyDialog.Show Debug.Print Answer

End Sub

В процессе работы этой процедуры появится окно:


Рис. 12.2.  Диалоговое окно замены

Обратите внимание, мы используем у объекта MyDialog такие свойства, как Find, Replace и даже FuzzyFind, соответствующие полям диалогового окна (В браузере объектов Вы не найдете поля FuzzyFind). В документации по Word можно найти список допустимых параметров для каждого типа диалогового окна.

Поскольку действительно важно уметь установить программно некоторые характеристики в диалоговом окне, то и в Excel предусмотрена такая возможность. Здесь всю работу выполняет метод Show,- он имеет до 30 возможных параметров и, используя их, можно передать при открытии окна всю необходимую информацию.


Содержание раздела