请求的成员不存在? Delphi6使用Word 2013创建数据源

时间:2017-01-19 08:13:50

标签: delphi ms-word automation mailmerge

我们有一个可以在Delphi 2006上运行的系统,它可以创建一个Word数据源,我们已经尝试了很多资源,但似乎找不到任何帮助我们的东西。问题是我们的数据源不会创建多个列,这意味着它会给我们一个“请求的成员不存在”的错误。请提供一些有关此问题的见解,因为我们认为它的Word 2013格式会给我们带来问题

procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;
  WordApp, NewDoc, wrdMailMerge, wrdDataDoc: OleVariant;

implementation`enter code here`

{$R *.dfm}


procedure TForm3.Button1Click(Sender: TObject);

begin
  WordApp := CreateOleObject('Word.Application');
  NewDoc:=WordApp.Documents.Open('c:\temp\TempLetter.doc');
  WordApp.Visible:= True;

  wrdMailMerge:=NewDoc.MailMerge;

  NewDoc.MailMerge.CreateDataSource('c:\temp\DataDoc.doc',,,'SUR_NME,   FUL_NME, NAT_PER_DE, PLACE, BTH_DT');
  wrdDataDoc:=WordApp.Documents.Open('c:\temp\DataDoc.doc');

  wrdDataDoc.Tables.Item(1).Cell(2,1).Range.InsertAfter('arno');

  wrdDataDoc.Tables.Item(1).Cell(2,2).Range.InsertAfter('venter');

  wrdDataDoc.Tables.Item(1).Cell(2,3).Range.InsertAfter('SA');
  wrdDataDoc.Tables.Item(1).Cell(2,4).Range.InsertAfter('ggggp');
  wrdDataDoc.Tables.Item(1).Cell(2,5).Range.InsertAfter(Date);

  wrdDataDoc.Save;
  wrdDataDoc.Close(False);


  wrdMailMerge.Execute(False);

  NewDoc.Saved:=False;
  NewDoc.Close(False);



    enter code here

  end;


end.

1 个答案:

答案 0 :(得分:-1)

关于Delphi中Office Automation的明智之举:强烈建议您在手动合并时在Word中录制宏,并查看Word为宏生成的VBA代码。

一旦你获得了VBA代码,它与你在Delphi中解决问题的方式相比如何?

有时,只有简单的拼写差异或特定Office对象成员的路径很难理解,只能使用Word文档。

祝你好运。