微软Word 2010邮件合并在德尔福5


有人能帮忙吗?

我继承了一些用Delphi5编写的软件,它允许将数据库(.ADT文件(中的成员数据和字段合并到word中。

它适用于除2010年以外的所有版本的Word,在2010年,它不会加载任何文档并显示错误:

"该方法在该对象上不可用">

有人告诉我,解决方案是用Ole变体替换预设组件OpWord和OpDataSet。我已经用OpWord做到了:

wrdApp:=CreateOleObject('Word.Application'(;

并且文档现在加载,但没有任何合并字段数据。有人能告诉我如何从数据库中提取这些数据吗?因为OpDataSet似乎只是指向表?

或者有人能提出比我尝试的更好的解决方案吗。我是德尔福的新手,所以我有点不知所措

编辑:(请求信息(

对不起,如果需要,我有更多的详细信息和代码。

这些组件似乎与TOpExcel、TOpOutlook和其他组件一起属于一个名为OfficePartner的库。

.doc是从Form30上弹出的ListPane中选择的,打开后用表4中的合并字段数据填充。表1是成员数据库:

  {Use Table4 as we can Set a range on it}
  Table4.SetRange([Table1.FieldByName('Member Id').AsString],[Table1.FieldByName('Member Id').AsString]);
  {Open Word}
  OpWord1.Connected := True;
  {Open the Test Document}
  OpWord1.OpenDocument(DocumentDirectory + '' + Form30.ListBox1.Items[Form30.ListBox1.ItemIndex]);
  {Populate the Test Document}
  OpWord1.ActiveDocument.MailMerge.OfficeModel := OpDataSetModel1;
  OpWord1.ActiveDocument.PopulateMailMerge;
  OpWord1.ActiveDocument.ExecuteMailMerge;

我希望这能帮助。。。

这是我在D6中使用的单词邮件合并的一个小过程,它只是一个片段,你必须包含在一些类中,我不再有Delphi了,所以无法编译以确保它能工作,无论如何,它在这里,希望它能有所帮助:

procedure MailMergeWord;
var
  WordApp: TWordApplication;
  WordDoc: TWordDocument;
  doc : WordDocument;
  FileName: OleVariant;
  xx: integer;
begin
  WordApp := TWordApplication.Create(nil);
  WordApp.ConnectKind := ckNewInstance;
  WordDoc := TWordDocument.Create(WordApp);
  FileName := 'TemplateDoc.doc';
  doc := WordApp.Documents.Open(FileName,EmptyParam,EmptyParam,EmptyParam,EmptyParam
                                 ,EmptyParam,EmptyParam,EmptyParam,EmptyParam
                                 ,EmptyParam);
  WordDoc.ConnectTo(Doc);
  for xx := 1 to WordDoc.Fields.Count do
    WordDoc.Fields.Item(xx).Result.Text := OnWordVariable(WordDoc.Fields.Item(xx).Code.Text);
  WordDoc.PrintOut;
  WordDoc.Free;
  WordApp.Free;
end;

function OnWordVariable(varName: string): string;
begin
  Result := 'Value based on variable name';
end;

相关内容

  • 没有找到相关文章

最新更新