在打开其他对话框时,我可以调用对话框吗?

时间:2013-10-17 13:25:26

标签: vba word-vba

我有一个宏,在事件SelectionChange上调用。此宏必须检查,文档附加了什么模板。打开文档的计算机上可能没有附加的模板。我需要知道,当发生这种情况时,我不能使用ActiveDocument.AttachedTemplate(当模板不存在时,它会显示Normal.dot)。所以,我用:

Application.Dialogs(wdDialogToolsTemplates).Template

这很好用。 但是,当我尝试通过ctrl + F在文档中找到某些内容时,在搜索和事件触发时会更改选择。宏被调用,但在上面的行上我得到一个错误:

  

此方法或属性不可用,因为“查找和替换”对话框处于活动状态

所以,问题是 - 有没有办法使用这个属性,而查找和替换对话框是活动的......?或mabe - 如果查找和替换对话框处于活动状态,有没有办法检查?

1 个答案:

答案 0 :(得分:1)

正如我在评论中建议的那样,您可以尝试使用On Error Resume Next来消除您的错误。但是,我做了一些测试,这对我来说很有意思。您可以通过两种方式添加错误处理,这会产生不同的结果。

'1st attempt will keep Find-Replace window and it will omit error
On Error Resume Next
Debug.Print Application.Dialogs(wdDialogToolsTemplates).Template
On Error Goto 0


'2nd attempt will close Find-Replace window and will return template name
 On Error Resume Next        'this seems to be unnecessary anyway
 Dim tmpDialog As Dialog
 Set tmpDialog = Application.Dialogs(wdDialogEditFind)
 'Find-Replace window will be closed at this stage
 Debug.Print Application.Dialogs(wdDialogToolsTemplates).Template

对Office-Word-2010进行了测试和测试。