delphi – Word 2010自动化:’转到书签’
发布时间:2020-12-15 09:52:20 所属栏目:大数据 来源:网络整理
导读:我有一个用Delphi-7编写的程序,它打开一个基于模板的新Word文档. 文档打开后,自动跳转到书签(在模板中预定义)并在那里添加一些文本. 以下代码在Word 2003中正常工作但在Word 2010中导致无效的变体操作错误消息(为了清楚起见,我省略了try / except块). wrdapp
我有一个用Delphi-7编写的程序,它打开一个基于模板的新Word文档.
文档打开后,自动跳转到书签(在模板中预定义)并在那里添加一些文本. 以下代码在Word 2003中正常工作但在Word 2010中导致无效的变体操作错误消息(为了清楚起见,我省略了try / except块). wrdapp:= CreateOleObject ('Word.Application'); wrdDoc:= wrdapp.documents.add (wrdApp.Options.DefaultFilePath[wdUserTemplatesPath] + '1.dot' wrdApp.selection.goto (wdGotoBookmark,unassigned,'B1') 如果我用第三行替换 wrdDoc.bookmarks.item ('B1').select 该程序在Word 2003中运行良好,但仍然在Word 2010中崩溃. Word 2010“转到”书签的正确代码是什么? 解决方法
Word 2010有一个与加载Normal.dotm相关的错误(也可能是插件,谁知道?).当你像平常一样启动Word 2010时,你会看到一个启动画面,Word会执行一些初始化,包括加载Normal.dotm.当您通过自动化启动Word时 – CreateOleObject(‘Word.Application’) – 它不会等到Normal.dotm加载并立即返回.但是,当Normal.dotm仍在加载时执行操作似乎会导致Word崩溃.我为解决这个问题所做的是创建一个等待模板加载的循环.你也可以选择延迟给Word初始化的时间,但到目前为止,循环工作.
像这样的东西: wrdapp := CreateOleObject('Word.Application'); //loop that waits for the normal template to load while wrdapp.Templates.Count = 0 do Sleep(200); //continue operations PS:我这里没有Delphi,所以代码可能包含错误,但你明白了 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |