Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


Mein Macro ist kein großes Geheimnis: zuerst wird das zu druckende
Dokument ausgewählt, danach mailmerge initialisiert. In dem
prindlg-Dialog wird ein Drucker aus der Liste der existierende Drucker
ausgewählt und danach mailmerge.execute zum Drucken aufgerufen.

Sub Serienbrief_erstellen
    Dim MailMerge As Object
    Dim Eigenschaften() As Object
    Dim oTextDocument as Object
    Dim URL As String
    Dim outputpath as String
    Dim filename as String
    Dim Dummy()
    Dim oPrintServer ' The print server service.
    Dim oCore        ' Get classes and other objects by name.
    Dim oClass       ' XPrinterServer class object.
    Dim oMethod      ' getPrinterNames method from the XPrinterServer class.
    Dim aNames       ' List of printer names.
    dim props
    Dim myPrinter(0) as new com.sun.star.beans.PropertyValue
    Dim mydoc as object
   
    MyDialog=createunoservice("com.sun.star.ui.dialogs.FilePicker")
    MyDialog.execute
    filename=MyDialog.Files(0)
    if filename="" then exit sub
    MailMerge=createUnoService("com.sun.star.text.MailMerge")

    With MailMerge
        .DataSourceName="Myelomodbc"
        .DocumentURL=ConvertToURL(filename)
        .CommandType=2
        .Command="select * from myelomdata"
        .Filter=FilterText
        .OutputType=1
        .SinglePrintJobs = False
    End With
DialogLibraries.LoadLibrary( "Standard" )
dlgBeschreibung=DialogLibraries.Standard.Printdialog
printdlg=CreateUnoDialog(dlgBeschreibung)
Formular = ThisComponent.DrawPage.Forms.getByIndex(0)

 
  oPrintServer = CreateUnoService("com.sun.star.awt.PrinterServer")
  oCore = CreateUnoService("com.sun.star.reflection.CoreReflection")
 
  oClass = oCore.forName("com.sun.star.awt.XPrinterServer")
 
  oMethod = oClass.getMethod("getPrinterNames")
 
  aNames = oMethod.invoke(oPrintServer, Array())

  printdlg.getControl("Printerliste").Model.StringItemList = aNames()
  props=thisComponent.getPrinter()
  printdlg.getControl("Printerliste").selectItem(props(0).value,true)

printdlg.Execute()
if printername<>"" and Filtertext<>"" then
    myDoc=thiscomponent
    dim arg(0) as New com.sun.star.beans.PropertyValue
    arg(0).name="Name"
    arg(0).value=printername

    mydoc.setPrinter(arg())
   
    MailMerge.execute(Eigenschaften())
end if

if Filtertext="" then msgbox("Unzuläßige Auswahl '"+Filtertext+"'")

Reinhard


Am 2011-11-06 19:54, schrieb Frieder:
Am 06.11.2011 19:47, schrieb rh:
Das kann leider nicht funktionieren, weil es vor dem Aufruf von
/mailmerge.execute/ ja noch gar kein Dokument gibt, dem man
Eigenschaften zuweisen könnte.

Reinhard
Hallo
bevor du die Dokumente  Drucken kannst, mußt du sie aber erst
erstellen. Dabei kannst du ihnen auch einen Drucker zuweisen.
es besteht die Möglichkeit, sie erst in eine Datei zu drucken, und
dann die Dateien per Makro zu Drucken.
wenn du nicht offenlegst , wie dein Makro funktioniert, dann kann dir
hier keiner helfen.
Gruß
Frieder

Am 2011-11-06 17:36, schrieb Frieder:
Am 06.11.2011 17:27, schrieb rh:
Ich habe einen Libreoffice-Basic Macro geschrieben um mit Adressdaten
aus einer Datenbank Serienbriefe zu drucken. Das funktioniert auch
wunderbar. Allerdings möchte ich gerne wählen können auf welchem
Drucker
die Serienbriefe tatsächlich gedruckt werden, also soetwas wie den
gewohnten Druckerdialog. Wie wird das gemacht? Ich habe trotz langem
Suchen leider keine Lösung finden können.

Hallo Reinhard
Hast du schon hier Geschaut?:
http://www.starbasicfaq.de/WiekannmandenDruckerwechseln..html

Gruß
frieder




-- 
Informationen zum Abmelden: E-Mail an users+help@de.libreoffice.org
Tips zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.