[英]Mailmerge in MSOffice 2010 vs Trial version, with Delphi
我正在尝试通过创建 oleobject 而不是表单组件来使我的 Delphi 会员应用程序使用 word2010 自动化:
wrdApp := createoleobject('word.application');
打开邮件合并模板:
wrdDoc := wrdApp.Documents.Open('user definable template location')
wrdMailMerge := wrdDoc.MailMerge;
创建并填充名为 DataDoc.docx 的邮件合并,其中包含从成员数据库中提取的字段和数据。
CreateMailMergeDataDile;
PopulateMailMergeDataFile;
执行邮件合并:
wrdMailMerge.Destination := wdSendToNewDocument;
wrdMailMerge.Execute(False);
清理:
wrdDoc.Saved := True;
wrdDoc.Close(False);
DeleteFile(DataDoc.docx);
显示字:
wrdApp.Visible := True;
这就像我的 Word2010 试用版的魅力一样,适用于我的会员数据库中的单个和多个邮件合并。
但是,我刚刚在具有完整 Word2010 版本的 PC 上对其进行了测试,并收到错误消息:
“此方法或属性不可用,因为当前邮件合并主文档需要数据源”
临时数据源似乎正确填充,但模板文档似乎无法使用它......
有没有人知道为什么会发生这种情况,或者为什么完整版和试用版的自动化之间会有差异。 也许它甚至可以通过插件来解决?
非常感谢
编辑:下面是我的 CreateMergeDataFile function:
procedure TForm1.CreateMailMergeDataFile;
var
wrdDataDoc : Variant;
begin
// Open a data source from C:\Leisure\Membership\Documents containing the field data
If FileExists(DocumentDirectory+'\..\DataDoc.docx') then
DeleteFile(DocumentDirectory+'\..\DataDoc.docx');
CopyFile(PChar(DocumentDirectory+'\..\MergeFields.docx'),PChar(DocumentDirectory+'\..\DataDoc.docx'),True);
wrdDoc.MailMerge.OpenDataSource(DocumentDirectory+'\..\DataDoc.docx',EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam);
end;
此外,仅当 msword 版本为 14.0 (2010) 时才会执行此代码,该版本由先前创建的 word.application 确定,我以为我被告知这不需要终止。
好的只是为了关闭我有解决方案......
我不知道为什么,但显然在某些设置上,数据源可能会与文档分离,可能是在重新打开和编辑之后。
我只是添加了一行代码,在数据源保存后和执行合并之前再次打开它。 工作一种享受。
谢谢您的帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.