Announcement

Collapse
No announcement yet.

MSWord Visual Basic - Code in Delphi programmieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MSWord Visual Basic - Code in Delphi programmieren

    MSWord - Makro in Delphi 5 programmieren:

    ich rufe bisher in einer Delphi-Application folgendes Word-Makro auf:<p> With ActiveDocument.MailMerge<br> .Destination =wdSendToNewDocument <br>.MailAsAttachment = False <br>.MailAddressFieldName = "" <br>.MailSubject = "" <br>.SuppressBlankLines = True <br>With .DataSource <br>.FirstRecord = wdDefaultFirstRecord <br>.LastRecord = wdDefaultLastRecord <br>End With <br>.Execute Pause:=True <br>End With<br> Windows(1).Activate<br> ActiveDocument.Close<P>

    Das Problem ist, daß dieses Makro natürlich in Word existieren muß. Der bessere Weg wäre natürlich den obigen Code direkt in Delphi zu programmieren. Es gelingt mir jedoch nicht die Basic Variablen (wdSendToNewDocument etc.) zuzuweisen. Wie würde der Code in Delphi aussehen ? Brauche dringend Hilfe !

  • #2
    Hallo,

    da Delphi 5 verwendet wird, stehen die VCL-Wrapperkomponenten für Microsoft Office auf der Registerseite <b>Servers</b> zur Verfügung. Somit könnte ein Aufruf so aussehen:
    <pre>
    unit MailMergeFrm;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls, Word_TLB, OleServer, ComCtrls;

    type
    TForm1 = class(TForm)
    StatusBar1: TStatusBar;
    WordApplication1: TWordApplication;
    WordDocument1: TWordDocument;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    private
    { Private-Deklarationen }
    public
    { Public-Deklarationen }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.DFM}

    { CSV-Datei ist als Datenquelle mit dem Dokument fest verbunden }

    procedure TForm1.Button1Click(Sender: TObject);
    var
    vFileName : OleVariant;
    aMailMerge : MailMerge;
    vPause : OleVariant;
    vSave : OleVariant;
    begin
    vFileName := 'C:\Temp\Out\MailMerge\Serienbrief.doc';
    WordApplication1.Connect;
    WordApplication1.Documents.OpenOld(vFileName, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam,
    EmptyParam, EmptyParam, EmptyParam,
    EmptyParam);
    WordDocument1.ConnectTo(WordApplication1.ActiveDoc ument);
    WordApplication1.Visible := True;
    vPause := True;
    aMailMerge := WordDocument1.MailMerge;
    aMailMerge.Destination := wdSendToNewDocument;
    aMailMerge.Execute(vPause);
    ShowMessage('Fertig');
    vSave := False;
    WordApplication1.Documents.Close(vSave, EmptyParam, EmptyParam);
    WordDocument1.Disconnect;
    WordApplication1.Disconnect;
    end;

    end.
    </pre>
    Das Beispielprojekt stammt aus meinem Buch <i>COM/DCOM/COM+ mit Delphi</i>.
    &#10

    Comment

    Working...
    X