Delphi 如何使用OLE绕过MSWord搜索和替换中的255字符限制

Delphi 如何使用OLE绕过MSWord搜索和替换中的255字符限制,delphi,ms-word,ole,replace,Delphi,Ms Word,Ole,Replace,我正在使用Delphi win32应用程序OLE在Word文档中执行搜索和替换 用户准备一个文件,其中包含一些文本标记,将它们封装在{和}中并保存该文件 差不多 亲爱的{NAME} 我想告诉你{我上周做了什么} 当然,名称和上周我所做的事情都是可以超过255的DB字段 所以现在通过使用Search和replace-with-OLE,我得到了一个字符串参数太长的错误,看起来255是最长的可用字符串 有没有一个简单的方法来解决这个问题 我想到的一些自制解决方案是: 1个截断为255个好的;可能会附加

我正在使用Delphi win32应用程序OLE在Word文档中执行搜索和替换

用户准备一个文件,其中包含一些文本标记,将它们封装在{和}中并保存该文件

差不多

亲爱的{NAME}

我想告诉你{我上周做了什么}

当然,名称和上周我所做的事情都是可以超过255的DB字段

所以现在通过使用Search和replace-with-OLE,我得到了一个字符串参数太长的错误,看起来255是最长的可用字符串

有没有一个简单的方法来解决这个问题

我想到的一些自制解决方案是:

1个截断为255个好的;可能会附加。。。最后

2对于每个需要替换超过255个字符的标记,我可以首先插入更多的标记,如{上周我做了什么}{上周我做了什么}{上周我做了什么}{然后一次替换255个字符

1是一个快速的解决方案,至少用户没有收到错误,但它当然不是很好

2可能会起作用,但这是一个解决办法,我更喜欢另一个解决方案


另一种解决方案可能不是使用OLE Serach&Replace,而是使用另一个函数。

我们使用AWordApp.Selection.TypeTextstrValue和loop替换值字符串长于255个字符的标记

var AWordApp: OLEVariant; ... AWordApp := CreateOleObject('Word.Application'); ... if (Length(strValue) > 255) then begin bFound := AWordApp.Selection.Find.Execute(params...); while bFound do begin AWordApp.Selection.TypeText(strValue); bFound := AWordApp.Selection.Find.Execute(params...); end; end;
关于

我们使用AWordApp.Selection.TypeTextstrValue和loop替换值字符串长于255个字符的标记

var AWordApp: OLEVariant; ... AWordApp := CreateOleObject('Word.Application'); ... if (Length(strValue) > 255) then begin bFound := AWordApp.Selection.Find.Execute(params...); while bFound do begin AWordApp.Selection.TypeText(strValue); bFound := AWordApp.Selection.Find.Execute(params...); end; end;
问候

使用邮件合并难道不能做到这一点吗?@Cosmin:msword-mailmerge很痛苦。通过自动化来记录变量要容易得多。可能比OP的解决方案更简单。虽然his对于用户来说可能更容易理解。OP不能先用文档字段替换用户定义的字段,然后用适当的数据填充文档字段吗?“我只是问,Word自动化从来没有。”Marjan Venema是的,我的简单方法受到任何类型用户的高度赞赏。此外,如果我改变了它,我应该让他们重新检查数千个已经存在的模板。无论如何,你能把我重定向到解释你文档变量想法的链接吗?@Cosmin:是的,那当然是可能的。我想!它应该有助于字符限制。用户193655:啊,如果你有一两分钟的时间。没有链接,但我有一个使用这种方法的D6应用程序。需要把它挖出来,稍微调整一下,让它看起来像样一点。我今天会试着去做,但不要屏住呼吸,可能要到星期天才能完成…:-使用邮件合并就不能做到这一点吗?@Cosmin:MS Word mailmerge是一种痛苦。通过自动化来记录变量要容易得多。可能比OP的解决方案更简单。虽然his对于用户来说可能更容易理解。OP不能先用文档字段替换用户定义的字段,然后用适当的数据填充文档字段吗?“我只是问,Word自动化从来没有。”Marjan Venema是的,我的简单方法受到任何类型用户的高度赞赏。此外,如果我改变了它,我应该让他们重新检查数千个已经存在的模板。无论如何,你能把我重定向到解释你文档变量想法的链接吗?@Cosmin:是的,那当然是可能的。我想!它应该有助于字符限制。用户193655:啊,如果你有一两分钟的时间。没有链接,但我有一个使用这种方法的D6应用程序。需要把它挖出来,稍微调整一下,让它看起来像样一点。我今天会试着去做,但不要屏住呼吸,可能要到星期天才能完成…:-这就是我的解决方案2。对吗?是的,如果你的意思是可能会工作,但这是一个解决办法,我更喜欢另一个解决方案你不必拆分字符串,明白了。这是一个非常好的建议,我已经实施,它的工作。谢谢。这就是我的解决方案2。对吗?是的,如果你的意思是可能会工作,但这是一个解决办法,我更喜欢另一个解决方案你不必拆分字符串,明白了。这是一个非常好的建议,我已经实施,它的工作。谢谢