我有一个宏,在事件SelectionChange上调用。此宏必须检查,文档附加了什么模板。打开文档的计算机上可能没有附加的模板。我需要知道,当发生这种情况时,我不能使用ActiveDocument.AttachedTemplate(当模板不存在时,它会显示Normal.dot)。所以,我用:
Application.Dialogs(wdDialogToolsTemplates).Template
这很好用。 但是,当我尝试通过ctrl + F在文档中找到某些内容时,在搜索和事件触发时会更改选择。宏被调用,但在上面的行上我得到一个错误:
此方法或属性不可用,因为“查找和替换”对话框处于活动状态
所以,问题是 - 有没有办法使用这个属性,而查找和替换对话框是活动的......?或mabe - 如果查找和替换对话框处于活动状态,有没有办法检查?
答案 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进行了测试和测试。