Word vba application dialogs

title keywords f1_keywords ms.prod api_name ms.assetid ms.date ms.localizationpriority

Application.Dialogs property (Word)

vbawd10.chm158334995

vbawd10.chm158334995

word

Word.Application.Dialogs

17acdfab-32d2-ddb8-04aa-692f9ffb20b8

06/08/2017

medium

Application.Dialogs property (Word)

Returns a Dialogs collection that represents all the built-in dialog boxes in Word. Read-only.

Syntax

expression. Dialogs

expression A variable that represents an Application object.

Remarks

For information about returning a single member of a collection, see Returning an object from a collection.

For a list of built-in dialog boxes, see the WdWordDialog enumeration.

Example

This example displays the built-in Find dialog box, with «Hello» in the Find What box.

Dim dlgFind As Dialog 
 
Set dlgFind = Dialogs(wdDialogEditFind) 
 
With dlgFind 
 .Find = "Hello" 
 .Show 
End With

This example displays the built-in Open dialog box showing all file types.

With Dialogs(wdDialogFileOpen) 
 .Name = "*.*" 
 .Show 
End With

This example prints the active document, using the settings from the Print dialog box.

Dialogs(wdDialogFilePrint).Execute

See also

Application Object

[!includeSupport and feedback]

Содержание

  • 1 cancel a procedure if the user clicked the Cancel button in a dialog box:
  • 2 Display one of Excel»s built-in dialog boxes and let the user make the choices: by using the Application object»s Dialogs property.
  • 3 Returning the Button the User Chose in a Dialog Box
  • 4 Set the contents of the File Name text box in the Save As dialog box in Word and then display the dialog box
  • 5 Specifying a Timeout for a Dialog Box
  • 6 To display Excel»s Open dialog box
  • 7 Using an Application»s Built-in Dialog Boxes from VBA: wdDialogFileOpen

cancel a procedure if the user clicked the Cancel button in a dialog box:

   <source lang="vb">

Sub dlg()

   If Dialogs(wdDialogFileOpen).show = 0 Then End

End Sub

</source>
   
  

Display one of Excel»s built-in dialog boxes and let the user make the choices: by using the Application object»s Dialogs property.

   <source lang="vb">

Sub show()

 Result = Application.Dialogs(xlDialogFormulaGoto).show

End Sub

</source>
   
  

Returning the Button the User Chose in a Dialog Box

   <source lang="vb">


Return Value Button Clicked
-2 Close
-1 OK
0 Cancel
1 The first command button
2 The second command button
>2 Subsequent command buttons

</source>
   
  

Set the contents of the File Name text box in the Save As dialog box in Word and then display the dialog box

   <source lang="vb">

Sub show()

   With Dialogs(wdDialogFileSaveAs)
       .Name = "Yellow Paint Primer"
       .show
   End With

End Sub

</source>
   
  

Specifying a Timeout for a Dialog Box

   <source lang="vb">

Sub dlg2()

   With Dialogs(wdDialogToolsOptions)
       .DefaultTab = wdDialogToolsOptionsTabUserInfo
       .show (15000)
   End With

End Sub

</source>
   
  

To display Excel»s Open dialog box

   <source lang="vb">

Sub showDialog()

 Application.Dialogs(xlDialogOpen).show

End Sub

</source>
   
  

Using an Application»s Built-in Dialog Boxes from VBA: wdDialogFileOpen

   <source lang="vb">

Sub box()

 If Documents.Count = 0 Then
     Proceed = MsgBox("no document.Please open a document.", vbOKCancel + vbExclamation, "Format Report")
     If Proceed = vbOK Then
         Dialogs(wdDialogFileOpen).Show
         If Documents.Count = 0 Then End
     Else
         End
     End If
 End If

End Sub

</source>

Displaying Built-in Word Dialog Boxes

This topic contains the following information and examples:

  • Showing a built-in dialog box
  • Returning and changing dialog box settings
  • Checking how a dialog box was closed

Showing a built-in dialog box

You can display a built-in dialog box to get user input or to control Microsoft Word by using Visual Basic for Applications. The Show
method of the Dialog object displays and executes any action taken in a built-in Word dialog box. To access a particular built-in Word dialog box, you specify a WdWordDialog constant with the Dialogs
property. For example, the following macro instruction displays the Open dialog box (wdDialogFileOpen).

    Sub ShowOpenDialog()
    Dialogs(wdDialogFileOpen).Show
End Sub
  

If a file is selected and OK is clicked, the file is opened (the action is executed). The following example displays the Print dialog box (wdDialogFilePrint).

    Sub ShowPrintDialog()
    Dialogs(wdDialogFilePrint).Show
End Sub
  

Set the DefaultTab
property to access a particular tab in a Word dialog box. The following example displays the Page Border tab in the Borders and Shading dialog box (Format menu).

    Sub ShowBorderDialog()
    With Dialogs(wdDialogFormatBordersAndShading)
        .DefaultTab = wdDialogFormatBordersAndShadingTabPageBorder
        .Show
    End With
End Sub
  

The Display
method displays a dialog box without executing the actions taken in the dialog box. This can be useful if you want to prompt the user with a built-in dialog box and return the settings. For example, the following macro instruction displays the User Information tab from the Options dialog box (Tools menu) and then returns and displays the user name.

    Sub DisplayUserInfoDialog()
    With Dialogs(wdDialogToolsOptionsUserInfo)
        .Display
        MsgBox .Name
    End With
End Sub
  

Note  You can also use Word’s Visual Basic for Applications properties to display the user information without displaying the dialog box. The following example uses the UserName
property for the Application
object to display the user name for the application without displaying the User Information dialog box.

    Sub DisplayUserInfo()
    MsgBox Application.UserName
End Sub
  

If the user name is changed in the previous example, the change is not set in the dialog box. Use the Execute
method to execute the settings in a dialog box without displaying the dialog box. The following example displays the User Information dialog box, and if the name is not an empty string, the settings are set in the dialog box by using the Execute method.

    Sub ShowAndSetUserInfoDialogBox()
    With Dialogs(wdDialogToolsOptionsUserInfo)
        .Display
        If .Name <> "" Then .Execute
    End With
End Sub
  

Note  Use the VBA properties and methods in Word to set the user information without displaying the dialog box. The following code example changes the user name through the UserName property of the Application object, and then it displays the User Information dialog box to show that the change has been made. Note that displaying the dialog box is not necessary to change the value of a dialog box.

    Sub SetUserName()
    Application.UserName = "Jeff Smith"
    Dialogs(wdDialogToolsOptionsUserInfo).Display
End Sub
  

Returning and changing dialog box settings

It’s not very efficient to use a Dialog object to return or change a value for a dialog box when you can return or change it using a property or method. Also, in most, if not all, cases, when VBA code is used in place of accessing the Dialog object, code is simpler and shorter. Therefore, the following examples also include corresponding examples that use corresponding VBA properties to perform the same tasks.

Prior to returning or changing a dialog box setting using the Dialog
object, you need to identify the individual dialog box. This is done by using the Dialogs
property with a WdWordDialog constant. After you have instantiated a Dialog object you can return or set options in the dialog box. The following example displays the right indent from the Paragraphs dialog box.

    Sub ShowRightIndent()
    Dim dlgParagraph As Dialog
    Set dlgParagraph = Dialogs(wdDialogFormatParagraph)
    MsgBox "Right indent = " & dlgParagraph.RightIndent
End Sub
  

Note  You can use the VBA properties and methods of Word to display the right indent setting for the paragraph. The following example uses the RightIndent
property of the ParagraphFormat
object to display the right indent for the paragraph at the insertion point position.

    Sub ShowRightIndexForSelectedParagraph()
    MsgBox Selection.ParagraphFormat.RightIndent
End Sub
  

Just as you can return dialog box settings, you can also set dialog box settings. The following example marks the Keep with next check box in the Paragraph dialog box.

    Sub SetKeepWithNext()
    With Dialogs(wdDialogFormatParagraph)
        .KeepWithNext = 1
        .Execute
    End With
End Sub
  

Note  You can also use the VBA properties and methods to change the right indent for the paragraph. The following example uses the KeepWithNext
property of the ParagraphFormat
object to keep the selected paragraph with the following paragraph.

    Sub SetKeepWithNextForSelectedParagraph()
    Selection.ParagraphFormat.KeepWithNext = True
End Sub
  

Note  Use the Update
method to ensure that the dialog box values reflect the current values. It may be necessary to use the Update method if you define a dialog box variable early in your macro and later want to return or change the current settings.

Checking how a dialog box was closed

The value returned by the Show and Display methods indicates which button was clicked to close the dialog box. The following example displays the Break dialog box, and if OK is clicked, a message is displayed on the status bar.

    Sub DialogBoxButtons()
    If Dialogs(wdDialogInsertBreak).Show = -1 Then
        StatusBar = "Break inserted"
    End If
End Sub
  

The following table describes the return values associated with buttons in dialogs boxes.

Return value Description
-2 The Close button.
-1 The OK button.
0 (zero) The Cancel button.
> 0 (zero) A command button: 1 is the first button, 2 is the second button, and so on.

9.4.8. PrintOut — распечатка документов

PrintOut предназначен для вывода документов на печать. Например, следующий код (листинг 9.14.) выводит на печать все документы Microsoft Word 2007 (то есть — с расширениями docx и docm ), расположенные в корневом каталоге диска C.

var_Doc = Dir("C:*.doc?")
Do While var_Doc <> ""
    Application.PrintOut FileName:=var_Doc
    var_Doc = Dir()
Loop


Листинг
9.14.
Печать всех документов из корневого каталога диска C

Метод PrintOut существует для различных объектов и может принимать множество параметров, управляющих всеми тонкостями печати. Например, с помощью такого кода (листинг 9.15.) мы можем распечатать первые пять страниц текущего документа:

ActiveDocument.ActiveWindow.PrintOut _
Range:=wdPrintFromTo, From:="1", To:="5"


Листинг
9.15.
Вывод на печать первых 5 страниц текущего документа

9.4.9. Quit — выход из приложения

Quit используется для выхода из приложения (листинг 9.16.):

Application.Quit


Листинг
9.16.
Выход из приложения

9.4.10. Run — запуск макросов

Run позволяет запускать макросы и, при необходимости, передавать им параметры (до 30). При вызове методу Run передается имя, состоящее из имени проекта, имени модуля, и, собственно, имени макроса. Например, запуск макроса MyMacros, расположенного в модуле NewModule проекта Project1 выглядит так (листинг 9.17.):

Application.Run ("Project1.NewModule.MyMacros")


Листинг
9.17.
Запуск макроса с помощью метода Run

Параметры, передаваемые макросу, перечисляются после его имени через запятую.

9.4.11. ScreenRefresh — принудительное обновление экрана

ScreenRefresh позволяет принудительно обновить экран. Используется обычно в комбинации с запретом автоматического обновления экрана (свойство Application.ScreenUpdating, его мы рассмотрим ниже). Как правило, обновление экрана делают через некоторые промежутки времени — тогда у пользователя не возникает ощущения, что программа зависла.

Теперь рассмотрим наиболее полезные свойства объекта Application.

9.5. Свойства объекта Application

9.5.1. ActiveDocument и другие — активный документ

ActiveDocument возвращает объект активного документа — того, который открыт в данный момент в Microsoft Word для редактирования. У объекта ActiveDocument есть множество полезных свойств и методов. Мы обсудим их при разговоре об объекте Document.

Например, в листинге 9.18 мы выводим в окне сообщения имя активного документа.

MsgBox Application.ActiveDocument.Name


Листинг
9.18.
Вывод имени активного документа

Надо отметить, что нельзя модифицировать свойство ActiveDocument — то есть не можем с его помощью сделать неактивный документ активным. Чтобы сделать документ активным, используют специальный метод объекта Document.

Существует немало других свойств Application, имена которых начинаются с Active.

ActivePrinter возвращает объект активного принтера — устройства, используемого для печати документов по умолчанию.

ActiveWindow возвращает активное окно — объект типа Window.

9.5.2. CapsLock — текущее состояние Caps Lock

CapsLock показывает текущее состояние режима Caps Lock. Если этот режим активен, по умолчанию при вводе с клавиатуры вводятся прописные буквы. Если режим Caps Lock включен — свойство возвращает True, если выключен — False.

9.5.3. Caption — заголовок окна MS Word

Caption позволяет узнать, и, при желании, изменить заголовок окна Microsoft Word.

Например код в листинге 9.19. меняет словосочетание Microsoft Word в заголовке окна на слова «Моя программа».

Application.Caption = "Моя программа"


Листинг
9.19.
Изменение заголовка окна MS Word

9.5.4. CustomizationContext — область сохранения настроек

CustomizationContext позволяет узнавать и задавать документ и шаблон, в котором сохраняются такие настройки, как изменения в настройке меню, панелей инструментов, горячих клавиш. Чтобы узнать текущую область настройки, достаточно выполнить код из листинга 9.20.

MsgBox Application.CustomizationContext


Листинг
9.20.
Узнаем область сохранения настроек

Чтобы установить в качестве области настройки шаблон Normal.dotm (то есть — сделать настройки доступными для всех документов), достаточно воспользоваться кодом листинга 9.21.:

CustomizationContext = NormalTemplate


Листинг
9.21.
Будем сохранять изменения настроек в Normal.dotm

Обратите внимание на то, что в предыдущих версиях MS Word этот шаблон назывался Normal.dot.

Для сохранения изменений в шаблоне, присоединенном к активному документу, можно воспользоваться командой из листинга 9.22.:

CustomizationContext = ActiveDocument.AttachedTemplate


Листинг
9.22.
Сохраняем изменения в присоединенном шаблоне

Для сохранения изменений лишь в текущем документе, можно использовать команду из листинга 9.23.

CustomizationContext = ThisDocument


Листинг
9.23.
Сохраняем изменения в присоединенном шаблоне

9.5.5. Dialogs — диалоговые окна MS Word

09-04-Dialogs.docm — пример к п. 9.5.5.

Dialogs возвращает коллекцию Dialogs (Диалоговые окна), которая дает доступ ко всем диалоговым окнам Microsoft Word. Если выполнить код листинга 9.24., можно узнать количество объектов в коллекции Dialogs.

MsgBox ("Количество окон в коллекции Dialogs:" + _
    Str(Application.Dialogs.Count))


Листинг
9.24.
Количество диалоговых окон в коллекции Dialogs

Чтобы отобразить диалоговое окно поиска строк в документе, можно использовать код, представленный в листинге 9.25.

Dim obj_FindS As Dialog
    Set obj_FindS = Dialogs(wdDialogEditFind)
    With obj_FindS
        .Find = "Строка"
        .Show
    End With


Листинг
9.25.
Запуск диалогового окна поиска строк в документе

Здесь мы объявляем объектную переменную типа Dialog, создаем ссылку на окно поиска строк в документе — это окно представлено константой wdDialogEditFind, после чего присваиваем свойству Find окна поиска значение «Строка» — именно это значение будет отображаться в строке поиска, и показываем окно поиска, используя метод Show. Похожим образом работают и с другими диалоговыми окнами. Их имена (около 230) можно найти в перечислении WdWordDialog.

9.5.6. DisplayAlerts — управление выводом сообщений

DisplayAlerts — позволяет управлять выводом диалоговых окон, сообщений об ошибках и т.д. при работе в Microsoft Word. Чтобы запретить вывод всех сообщений, используйте код, приведенный в листинге 9.26.

Application.DisplayAlerts = wdAlertsNone


Листинг
9.26.
Запрет вывода всех сообщений

Константа wdAlertsNone запрещает вывод сообщений. Аналогично, константа wdAlertsAll разрешает вывод всех сообщений, а wdAlertsMessageBox разрешает лишь вывод окон сообщений, сообщения об ошибках не выводятся.

9.5.7. EnableCancelKey — запрещаем остановку программы

09-05-Cancel.docm — пример к п. 9.5.7

EnableCancelKey — позволяет разрешать и запрещать пользователю остановку программы по нажатию сочетания клавиш Ctrl + Break. Это может быть полезно при выполнении участков кода, которые нельзя прерывать.

Для того чтобы запретить прерывание работы программы нужно присвоить этому свойству значение wdCancelDisabled, для разрешения — wdCancelInterrupt.

Пример использования этого оператора вы можете найти в листинге 9.27.

Dim num_b As Double
    MsgBox ("Вы не сможете прервать выполнение " + _
        "следующего кода")
    Application.EnableCancelKey = wdCancelDisabled
    For i = 1 To 1000000
        For j = 100 To 1 Step -1
            num_b = num_b * i / j
        Next j
    Next i
    Application.EnableCancelKey = wdCancelInterrupt
    MsgBox ("А теперь Ctrl + Pause Break " + _
        "снова работает")


Листинг
9.27.
Запрет прерывания выполнения программы

9.5.8. IsObjectValid — проверка объектных переменных

IsObjectValid — позволяет проверить объектную переменную. Если объект, на которую она ссылается, существует — проверка возвратит True, если нет — False. Это свойство полезно использовать для проверки объектов, которые могут быть удалены пользователем. Если объект существует, можно произвести с ним какие-либо действия. Если нет — сообщить причину, по которой действия невозможны.

9.5.9. KeyBindings — назначаем клавиатурные сокращения

KeyBindings — возвращает коллекцию KeyBindings, которая содержит информацию о клавиатурных привязках. Это очень полезная коллекция — с ее помощью можно, например, назначить клавиатурную комбинацию для запуска какого-нибудь макроса. листинг 9.28. позволяет назначить комбинацию клавиш Alt + Shift + T макросу TextEdit, хранящемуся в модуле MyMacros шаблона Normal.Dotm

Application.CustomizationContext = NormalTemplate
Application.KeyBindings.Add _
wdKeyCategoryMacro, _
"Normal.MyMacros.TextEdit", _
BuildKeyCode(wdKeyAlt, wdKeyShift, wdKeyT)


Листинг
9.28.
Программное назначение комбинации клавиш макросу

Сначала с помощью свойства CustomizationContext мы устанавливаем место, где будет сохранена привязка. Это — шаблон Normal.Dotm. Далее мы используем метод Add коллекции KeyBindings. Мы передаем этому методу три параметра. Первый ( wdKeyCategoryMacro ) указывает методу на то, что мы назначаем клавиатурную комбинацию макросу. Второй -» Normal.MyMacros.TextEdit » — указывает путь к макросу, запуск которого мы назначаем клавиатурному сокращению. Третий параметр содержит вызов метода BuildKeyCode — напомню, что он генерирует код сочетания клавиш на основе переданных ему параметров. В нашем случае он сгенерирует код для сочетания клавиш Alt + Shift + T — мы передали методу параметры wdKeyAlt, wdKeyShift и wdKeyT.

Если все сделано верно — в частности, макрос, запуск которого мы автоматизируем, существует — после выполнения такого кода нажатие выбранного сочетания клавиш в любом активном документе приведет к запуску этого макроса.

9.5.10. NumLock — состояние цифровой клавиатуры

NumLock возвращает состояние клавиши NumLock — True если цифровая клавиатура находится в режиме ввода цифр, иначе — False.

9.5.11. RecentFiles — недавно открытые файлы

RecentFiles — позволяет работать с файлами, которые вы недавно открывали. Список этих файлов можно увидеть в диалоговом окне открытия файлов. Последний файл, с которым вы работали, хранится в списке первым. Чтобы открыть его, можно воспользоваться кодом из листинга 9.29.

RecentFiles(1).Open


Листинг
9.29.
Открываем последний из недавно открытых файлов

9.5.12. ScreenUpdating — запрет обновления экрана

09-06-ScreenUpdating.docm — пример к п. 9.5.12.

Свойство ScreenUpdating используют для отключения обновления экрана во время вывода в документ большого количества информации или других действий с документом. Это позволяет ускорить работу, так как системные ресурсы не тратятся на постоянное обновление экрана. В листинге 9.30. мы запрещаем обновление экрана, выводим в документ 10000 строк, принудительно обновляя экран после каждой 1000 строк, после чего разрешаем автоматическое обновление.

Application.ScreenUpdating = False
    For i = 1 To 10
        For j = 1 To 1000
            Selection.TypeText ("Строка №" + Str(i * j))
            Selection.TypeParagraph
        Next j
        Application.ScreenRefresh
    Next i
    Application.ScreenUpdating = True


Листинг
9.30.
Запрет и разрешение обновления экрана

Очевидно, что присвоив False свойству ScreenUpdating мы запрещаем обновление экрана, а присвоив True — разрешаем.

Понравилась статья? Поделить с друзьями:
  • Word vba all open documents
  • Word vba макрос как запустить
  • Word vba выделить текст в таблице
  • Word vba выделить строку таблицы
  • Word vba выделить найденный текст