Delphi 如何使用OLE绕过MSWord搜索和替换中的255字符限制
我正在使用Delphi win32应用程序OLE在Word文档中执行搜索和替换 用户准备一个文件,其中包含一些文本标记,将它们封装在{和}中并保存该文件 差不多 亲爱的{NAME} 我想告诉你{我上周做了什么} 当然,名称和上周我所做的事情都是可以超过255的DB字段 所以现在通过使用Search和replace-with-OLE,我得到了一个字符串参数太长的错误,看起来255是最长的可用字符串 有没有一个简单的方法来解决这个问题 我想到的一些自制解决方案是: 1个截断为255个好的;可能会附加。。。最后 2对于每个需要替换超过255个字符的标记,我可以首先插入更多的标记,如{上周我做了什么}{上周我做了什么}{上周我做了什么}{然后一次替换255个字符 1是一个快速的解决方案,至少用户没有收到错误,但它当然不是很好 2可能会起作用,但这是一个解决办法,我更喜欢另一个解决方案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个好的;可能会附加
另一种解决方案可能不是使用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。对吗?是的,如果你的意思是可能会工作,但这是一个解决办法,我更喜欢另一个解决方案你不必拆分字符串,明白了。这是一个非常好的建议,我已经实施,它的工作。谢谢