显示内置对话框
可以显示内置对话框以获取用户输入的信息或使用 Visual Basic for Applications 控制 Microsoft Word。Dialog 对象的 Show 方法可显示并执行 Word 内置对话框中的任何操作。若要访问特定的内置 Word 对话框,请指定具有 Dialogs 属性的 WdWordDialog 常量。例如,下列宏指令显示“打开”对话框 (wdDialogFileOpen)。
Sub ShowOpenDialog()
Dialogs(wdDialogFileOpen).Show
End Sub
选定文件并单击“确定”按钮后,会将文件打开(执行操作)。下列示例显示“打印”对话框 (wdDialogFilePrint)。
Sub ShowPrintDialog()
Dialogs(wdDialogFilePrint).Show
End Sub
设置 DefaultTab 属性可以访问 Word 对话框中的特定选项卡。下列示例显示(“格式”菜单中)“边框和底纹”对话框中的“页面边框”选项卡。
Sub ShowBorderDialog()
With Dialogs(wdDialogFormatBordersAndShading)
.DefaultTab = wdDialogFormatBordersAndShadingTabPageBorder
'这个偷长,我都晕了。
.Show
End With
End Sub
Display 方法显示对话框但不执行对话框的操作。如果使用内置对话框提示用户并返回设置,则该方法很有用。例如,下列宏指令显示(“工具”菜单中)“选项”对话框中的“用户信息”选项卡,然后返回并显示用户名称。
Sub DisplayUserInfoDialog()
With Dialogs(wdDialogToolsOptionsUserInfo)
.Display
MsgBox .Name
End With
End Sub
注释 您也可使用 Word 的 Visual Basic for Applications 属性显示用户信息而不显示对话框。下列示例使用 Application 对象的 UserName 属性显示应用程序的用户名称,而不显示“用户信息”对话框。
Sub DisplayUserInfo()
MsgBox Application.UserName
End Sub
如果在上例中更改用户名称,对话框设置不会发生更改。使用 Execute 方法可以执行对话框中的设置而不显示该对话框。下列示例显示“用户信息”对话框,如果名称不是空字符串,则可使用 Execute 方法设置对话框。
Sub ShowAndSetUserInfoDialogBox()
With Dialogs(wdDialogToolsOptionsUserInfo)
.Display
If .Name <> "" Then .Execute
End With
End Sub
注释 使用 Word 中的 VBA 属性和方法可设置用户信息而不显示对话框。下列代码示例通过 Application 对象的 UserName 属性更改用户名称,然后显示“用户信息”对话框,显示已进行了更改。请注意,更改对话框值时,并非必须显示对话框。
Sub SetUserName()
Application.UserName = "Jeff Smith"
Dialogs(wdDialogToolsOptionsUserInfo).Display
End Sub
返回并更改对话框设置
如果可以使用属性或方法返回或更改对话框值,使用 Dialog 对象返回或更改该数值并非很有效。而且在大多数情况下,使用 VBA 代码代替访问 Dialog 对象时,代码更简单并更简短。因此,下列示例同时包含对应的使用相应 VBA 属性执行相同的任务的示例。
使用 Dialog 对象返回或更改对话框设置之前,需要识别单独的对话框。使用 WdWordDialog 常量的 Dialogs 属性可完成该操作。识别 Dialog 对象后,可以返回或设置对话框中的选项。下列示例显示“段落”对话框的右缩进。
Sub ShowRightIndent()
Dim dlgParagraph As Dialog
Set dlgParagraph = Dialogs(wdDialogFormatParagraph)
MsgBox "Right indent = " & dlgParagraph.RightIndent
End Sub
注释 可以使用 Word 的 VBA 属性和方法显示段落的右缩进设置。下列示例使用 ParagraphFormat 对象的 RightIndent 属性显示插入点位置的段落右缩进。
Sub ShowRightIndexForSelectedParagraph()
MsgBox Selection.ParagraphFormat.RightIndent
End Sub
类似于返回对话框值,您也可以设置对话框值。下列示例标记“段落”对话框中的“与下段同页”复选框。
Sub SetKeepWithNext()
With Dialogs(wdDialogFormatParagraph)
.KeepWithNext = 1
.Execute
End With
End Sub
注释 您也可以使用 VBA 属性和方法更改段落的右缩进。下列示例使用 ParagraphFormat 对象的 KeepWithNext 属性将所选段落与其后的段落保持在同一页。
Sub SetKeepWithNextForSelectedParagraph()
Selection.ParagraphFormat.KeepWithNext = True
End Sub
注释 使用 Update 方法可确保对话框的值反映当前值。如果预先在宏中定义了对话框变量,然后需要返回或更改当前设置,则可能必须使用 Update 方法。
检查对话框的关闭方式
Show 和 Display 方法返回的值标明关闭对话框时单击的按钮。下列示例显示“分隔符”对话框,如果单击“确定”按钮,则在状态栏中显示一条消息。
Sub DialogBoxButtons()
If Dialogs(wdDialogInsertBreak).Show = -1 Then
StatusBar = "Break inserted"
End If
End Sub
下列表格说明与对话框中的按钮相关联的返回值。