【问题标题】:How to bypass the 255 char limitation in MSWord Search&Replace using OLE如何使用 OLE 绕过 MS Word 搜索替换中的 255 个字符限制
【发布时间】:2011-07-22 09:34:42
【问题描述】:

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

用户准备了一个文件,其中包含一些文本标签,将它们括在“{”和“}”中并保存文件。

类似

亲爱的{NAME},

我想告诉你{WHAT_I_DID_LAST_WEEK}

当然NAMEWHAT_I_DID_LAST_WEEK是可以超过255的DB字段。

所以现在通过使用 OLE 搜索和替换,我得到一个 STRING PARAMETER TOO LONG 错误(似乎 255 是那里可用的最长字符串)。

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

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

1) 截断到 255 (好一个;)) 可能会在末尾附加“...”

2) 对于每个需要替换超过 255 个字符的“标签”,我可以先插入更多标签,例如 {WHAT_I_DID_LAST_WEEK_1}{WHAT_I_DID_LAST_WEEK_2}{WHAT_I_DID_LAST_WEEK_N},然后一次替换 255 个字符

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

(2) 可能会起作用,但这是一种解决方法,我更喜欢另一种解决方案。

可能是另一种解决方案,不是使用 OLE Serach&Replace,而是使用其他功能。

【问题讨论】:

  • 不能用邮件合并来做同样的事情吗?
  • @Cosmin:MS Word 邮件合并很痛苦。通过自动化记录变量要容易得多。并且可能比 OP 的解决方案更容易。虽然他的用户可能更容易理解。
  • OP不能先用文档字段替换那些用户定义的字段,然后用适当的数据填充文档字段吗?我只是问,从来没有 Word 自动化。
  • @Marjan Venema 是的,任何类型的用户都非常欣赏我的简单方法。此外,如果我更改它,我应该要求他们重新审查数千个已经存在的模板。无论如何,您可以将我重定向到一些解释您的 Document 变量想法的链接吗?
  • @Cosmin:是的,这当然是可能的。而且我认为(!)它应该有助于字符限制。 user193655:啊,如果你有一两三分钟的时间。没有链接,但我确实有一个使用这种方法的 D6 应用程序。需要挖掘它并“调整”它以使其看起来像。今天会尝试做,但不要屏住呼吸,可能要到周日...... :-)

标签: delphi ms-word ole replace


【解决方案1】:

我们使用 AWordApp.Selection.TypeText(strValue) 和循环替换值字符串超过 255 个字符的标签...

变量 AWordApp:OLEVariant; ... AWordApp := CreateOleObject('Word.Application'); ... 如果(长度(strValue)> 255)那么 开始 bFound := AWordApp.Selection.Find.Execute(params...); 而 bFound 做 开始 AWordApp.Selection.TypeText(strValue); bFound := AWordApp.Selection.Find.Execute(params...); 结尾; 结尾;

问候

【讨论】:

  • 这是我的解决方案 (2)。对吗?
  • 是的,如果您的意思是“可能可行,但这是一种解决方法,我更喜欢另一种解决方案。” :) 您不必拆分字符串。
  • 好的,知道了。这是一个非常好的建议,我已经实施并且有效。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
相关资源
最近更新 更多