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 [email protected]
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