【发布时间】:2011-07-22 09:34:42
【问题描述】:
我正在使用(在 Delphi win32 应用程序中)OLE 在 Word 文档中执行搜索和替换。
用户准备了一个文件,其中包含一些文本标签,将它们括在“{”和“}”中并保存文件。
类似
亲爱的{NAME},
我想告诉你{WHAT_I_DID_LAST_WEEK}
当然NAME和WHAT_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