Einzelnen Beitrag anzeigen

Benutzerbild von MPirnstill
MPirnstill

Registriert seit: 19. Jul 2004
Ort: Burgdorf
197 Beiträge
 
Delphi XE8 Enterprise
 
#7

Re: WORD Seriendruckdatenquelle

  Alt 15. Nov 2005, 10:21
Zitat von Keldorn:
welchen Aufruf verwendest du denn?
Hi Frank!

Da ich bei diesem Projekt leider noch auf Delphi 2.0 festhänge, kann ich leider nicht diese tollen Application-Server-Komponenten verwenden. Also erzeuge ich ein OLE-Objekt:

aMsWord := CreateOleObject('Word.Basic'); Den Seriendruck starte ich dann mit folgender Routine:

Delphi-Quellcode:
procedure TfrmVorSel.starteSeriendruck(aMSWord: Variant; aDokument, aSteuerdatei: String);
var
  OLEFormat: Cardinal;
  OLEConfirmConversions: Variant;
  OLEReadOnly: Variant;
  OLELinkToSource: Variant;
  OLEAddToRecentFiles: Variant;
  OLEPasswordDocument: Variant;
  OLEPasswordTemplate: Variant;
  OLERevert: Variant;
  OLEWritePasswordDocument: Variant;
  OLEWritePasswordTemplate: Variant;
  OLEConnection: Variant;
  OLESQLStatement: Variant;
  OLESQLStatement1: Variant;
begin
  try
    if Daten then
    begin
      aMSWord.Visible := False; //Word sichtbar
      aMSWord.Documents.Open(aDokument); //Dokument öffnen
      // Steuerdatei neu einbinden
      OLEFormat := $00000005;; //wdOpenFormatText
      OLEConfirmConversions := False;
      OLEReadOnly := False;
      OLELinkToSource := True;
      OLEAddToRecentFiles := False;
      OLEPasswordDocument := '';
      OLEPasswordTemplate := '';
      OLERevert := False;
      OLEWritePasswordDocument := '';
      OLEWritePasswordTemplate := '';
      OLEConnection := '';
      OLESQLStatement := '';
      OLESQLStatement1 := '';
      aMSWord.ActiveDocument.MailMerge.OpenDataSource(aSteuerdatei,
                                                      OLEFormat,
                                                      OLEConfirmConversions,
                                                      OLEReadOnly,
                                                      OLELinkToSource,
                                                      OLEAddToRecentFiles,
                                                      OLEPasswordDocument,
                                                      OLEPasswordTemplate,
                                                      OLERevert,
                                                      OLEWritePasswordDocument,
                                                      OLEWritePasswordTemplate,
                                                      OLEConnection,
                                                      OLESQLStatement,
                                                      OLESQLStatement1);
      //Destination hat 4 Konstanten zur Auswahl:
      // wdSendToNewDocument(0),
      // wdSendToPrinter(1),
      // wdSendToEmail(2),
      // wdSendToFax (3),
      aMSWord.ActiveDocument.MailMerge.Destination := 1; //wdSendToPrinter(1)
      aMSWord.ActiveDocument.MailMerge.Execute;
    end;//if Daten
  except
    on E:Exception do
      ShowMessage(LoadStr(isDruck));
  end;
end;
Das paradoxe an der ganzen Sache ist, daß mit Word 2003 (aktuell im Einsatz befindliche Version) läuft das Programm wie es ursprünglich mal angedacht war. Nämlich "Drucken" klicken und ratzfatz raus damit. Dies hatte damals unter Word 97 merkwürdigerweise nicht funktioniert und es Word zeigt vor jedem Serienbrief den Druckdialog und wartete auf Bestätigung. Dies haben die Anwender genutzt, den Druckvorgang unterbrochen, Brief ändern und weiterdrucken. Daran haben sich die Anwender gewöhnt
und wollen es verständlicherweise gern wiederhaben.
Das Ding ist, ich habe Aufruf nicht geändert, nur die Word-Version ist von 97 auf 2003 gestiegen. Und jetzt habe keine Ahnung wie ich es drehe, daß die ihren Dialog wiederbekommen.

Wäre schön, wenn du mir da helfen könntest.

Gruß

P.S.: Ich hatte, daß heute alles schon mal geschrieben, mußte dann etwas anderes erledigen und als ich weitermachen wollte, bin ich aus dem 'Posting'-Modus oder wie man das nennen soll, rausgeflogen.
Micha
Ich habe fertig!

DP - hier werden Sie geholfen!
  Mit Zitat antworten Zitat