【发布时间】:2011-05-06 15:34:18
【问题描述】:
我有一个用 Delphi-7 编写的程序,它可以打开一个基于模板的新 Word 文档。
打开文档后,自动跳转到书签(在模板中预定义)并在其中添加一些文本。
以下代码在 Word 2003 中运行良好,但在 Word 2010 中会导致 invalid variant operation 错误消息(为了清楚起见,我省略了 try/except 块)。
wrdapp:= CreateOleObject ('Word.Application');
wrdDoc:= wrdapp.documents.add (wrdApp.Options.DefaultFilePath[wdUserTemplatesPath] + '1.dot'
wrdApp.selection.goto (wdGotoBookmark, unassigned, unassigned, 'B1')
如果我将第三行替换为
wrdDoc.bookmarks.item ('B1').select
该程序在 Word 2003 中运行良好,但在 Word 2010 中仍然崩溃。
Word 2010“转到”书签的正确代码是什么?
【问题讨论】:
-
只是好奇,如果你在第一行和第二行之间等待 10 秒 (
Sleep(10000);),你还会得到错误吗? -
难以置信但真实!让您的评论成为答案,因为睡眠是代码工作的原因。我将时间缩短到 5 秒,但这也奏效了。
-
等一下...必须有比固定睡眠间隔更好的方法。当然,这种方法可能适用于几乎所有实例,但可能有一种方法可以保证在每个实例中都有效。人们会期望像
wrdApp.WaitUntilReady...
标签: delphi automation ms-word delphi-7