繁体   English   中英

MSOffice 2010 与试用版中的邮件合并,带有 Delphi

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM