2

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

Application.Dialogs(wdDialogToolsTemplates).Template

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

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

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

4

1 回答 1

2

正如我在评论中建议的那样,您可以尝试使用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 进行了尝试和测试。

于 2013-10-17T17:00:07.947 回答