Seite 2 von 2

Verfasst: Di, 28. Nov 2006 12:28
von Lewi
Word nutzt beim Druck -sofern nichts anderes angegeben - den augenblicklich in Windows gesetzten Standarddrucker.

Um einen anderen Drucker zu setzten, kann innerhalb von Word ein anderer Standarddrucker temporär gesetzt werden:

cOldPrinter := oWord:Activeprinter
oWord:Activeprinter := cPrinter
.....
Vor Beendigung von Word sollte der ursprüngliche Drucker wieder gesetzt werden:

oWord:Activeprinter := cOldPrinter


Gruß, Olaf

Verfasst: Di, 28. Nov 2006 12:50
von brandelh
Lewi hat geschrieben:cOldPrinter := oWord:Activeprinter
oWord:Activeprinter := cPrinter
oWord:Activeprinter := cOldPrinter
das ist ja interessant.

Kann man für cPrinter den String von XbpPrinter():list()[?] nutzen ?

Wenn ja ist das ja eine geniale Lösung.

Verfasst: Di, 28. Nov 2006 12:56
von Lewi
Yep!

Verfasst: Di, 28. Nov 2006 12:58
von Tom
Hallo, Hubert.
Kann man für cPrinter den String von XbpPrinter():list()[?] nutzen ?
Ja.

Verfasst: Di, 28. Nov 2006 16:16
von Lewi
Ich habe das Beispiel mit JazeAge für xBase 1.9 adaptiert:

Code: Alles auswählen

Procedure RunSerienBrief( cDoc, cDat)

   Local oWord
   Local oDoc
   Local wdFormLetters := 0


   oWord := CreateObject("Word.Application")
   IF Empty( oWord )
      MsgBox( "Microsoft Word ist nicht installiert" )
   ENDIF

   oWord:visible := .T.
   oWord:Documents:Add(cDoc )

   oDoc := oWord:ActiveDocument
   oDoc:MailMerge:MainDocumentType := wdFormLetters

   oDoc:MailMerge:OpenDataSource(cDat)
// Natürlich könnte an dieser Stelle jetzt auch automatisch der Druck angestoßen werden
// und anschließend Word beendet werden.
// Ist oWord:visible := .F., kann der Druck auch im Hintergrund erfolgen

   // Ein Sleep() ist an dieser Stelle unbedingt erforderlich
   // falls der Anwender in Word verbleiben soll!
   sleep(200)

//  sollte nach dem Druck die Word beendet werden ..
   // oDoc:close()
   //oWord:quit()

   // trennen der ActiveX-Verbindung
   oWord:destroy()
   oWord := NIL
Return
Ein kompletes Serienbriefbeispiel inkl. Daten und Formatvorlage kann herunter geladen werden:
hier

Verfasst: Mi, 29. Nov 2006 8:28
von Muecke
Hallo zusammen,

ich möchte mich mal bedanken für Euren Einsatz.
So viele Infos und richtige Beispiele bekommt man nur bei Euch.
Auch Tom hat mir ein sehr reichhaltigen Report gegeben.

Olaf hat das was ich suchte.Genial.

Frage an Olaf hab ich doch noch:
Hast da noch ein Typ?
Wenn ich den Seriendruck starte aus Word hab ich folgendes Makro:

Code: Alles auswählen

    With ActiveDocument.MailMerge
          .Destination = wdSendToPrinter
         .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=False
    End With
    ActiveWindow.Close
Da wird der Drucker für Serie angesprochen.

So muss der Anwender nur noch den Drucker wählen, für den Seriendruck.

Gruss Thomas

Verfasst: Mi, 29. Nov 2006 10:58
von Koverhage
Hallo Thomas,

wollte Dir das per E-Mail schicken, aber leider ist bei Dir keine hinterlegt.

Verfasst: Mi, 29. Nov 2006 11:04
von Martin Altmann
Hallo Klaus,
wie Du sehen kannst, ist bei Thomas eine Mailadresse hinterlegt - darum sieht man unter seinen Postings auch das email-Symbol.
Allerdings wird die email-Adresse nie angezeigt. Man sagt also, dass man eine email senden will und kann diese dann ganz normal (wie bei einer PN) eingeben - nur mit dem Unterschied, dass sie an die hinterlegte Mailadresse geschickt wird.
Attachments kann man dadurch allerdings immer noch nicht senden.

Viele Grüße,
Martin