在word文档中查找特定字符串并进行更新

时间:2015-11-20 09:30:28

标签: delphi ms-word delphi-2007

我必须将Delplhi中的一些数据库字段数据更新为word文档。我必须找到一个特定的字段,它在word文档的几个地方重复出现(表,第1段,第5段)。

wordapp: Twordapplication;
Bookmarkname,Bookmarkrange:Olevariant;
Bookmarkname := 'Supplier';
if Wordapp.ActiveDocument.Bookmarks.Exists(BookmarkName) then //condition to check for a particular string
begin
BookmarkRange := Wordapp.ActiveDocument.Bookmarks.Item(BookmarkName).Range;
BookmarkRange.InsertAfter('Database Value/String that needs to be updated in word document');

我能够找到一个字符串,然后在word旁边放一个书签,并使用上面提供的delphi代码更新创建的书签中的值。我的问题是,我尝试在另一个地方使用相同的书签名称,它不起作用。有人可以帮忙吗?提前致谢

2 个答案:

答案 0 :(得分:1)

您可以使用三个带有(稍微)不同名称的书签。

或者您可以使用内容控件而不是书签。内容控件可以具有相同的标题或标记(它们没有“名称”)属性。 Document SelectionContentControlsByTitle(或...... ByTag)返回文档中所有内容控件的数组,然后您可以循环数组并写入它们。

更高效,尤其是出于数据目的,将内容控件链接到自定义XML部件。可以将多个内容控件链接到同一个XML节点:写入节点将更新所有链接内容控件中的数据。

答案 1 :(得分:0)

书签只能存在于一个地方,因此您无法使用该方法进行多次替换。

然而,您可以在Word自动化中进行简单的搜索和替换,以便您可以使用标记,例如{{forename}},{{address1}}或其他任何内容,只需将该文本替换为数据库中的值即可。

比书签更容易使用,因为您实际上可以在模板文档中看到标记。