(in "My cros/Standard/mdlOOPDF):
Code: Alles auswählen
Sub mmergePDF()
' Vorarbeiten erforderlich?
<???>
Dim oLis As Object : oLis = CreateUnoListener( "oLis_", "com.sun.star.text.XMailMergeListener" )
Dim oMM As Object : oMM = CreateUnoService( "com.sun.star.text.MailMerge" )
Dim oProps()
With oMM
.DocumentURL = <...>
.DataSourceName = <...>
.CommandType = <...>
.Command = <...>
.OutputType = com.sun.star.text.MailMergeType.FILE
.OutputUrl = <...>
.FileNameFromColumn = False
.SaveFilter = "writer_pdf_Export"
.addMailMergeEventListener( oLis )
.execute( oProps() )
.removeMailMergeEventListener( oLis )
End With
' Nacharbeiten erforderlich?
<???>
End Sub
Sub oLis_notifyMailMergeEvent( oEv As Object )
Dim oDoc As Object : oDoc = oEv.Model
Dim oForm As Object : oForm = oDoc.DrawPage.Forms.getByIndex( 0 )
Dim picSign0 As Object : picSign0 = oForm.getByName( "picSign0" )
<...>
Dim sFSpec : sFSpec = <...>
picSign0.imageURL = ConvertToURL( sFSpec )
End Sub
Sub oLis_disposing()
End Sub
- einer von einem 'fremden' Programm erstellen .txt-Datei
- in einem Verzeichnis abgelegten, den Datensaetzen zugeordneten Bildern (Dateiname kann aus Feldinhalten abgeleitet werden)
- einer .odt-Datei - ganz standardmaessig bis auf das Image-Control "picSign0"
- einer registrierten OOBase, die auf die .txt-Detei verweist
eine Serie von .pdf-Dateien zu erzeugen. Das funktioniert auch gut -
bis auf zwei Probleme:
- Für jeden Datensatz wird ein dann als .pdf gespeichertes Dokument sichtbar geoeffnet.
- Kann/muss ich vor der Erzeugung des MailMerge-Objekts einen neuen Desktop (ein neues/leeres Dokument) erzeugen und irgendwie (_hidden?, Parameter?) unsichtbar machen?
- Sollte ich das Macro in ein Dokument verlegen und dies unsichtbar oeffnen?
- Nach dem Prozess ist die .txt-Datei gesperrt.
- Kann/muss ich nach dem Prozess die Datenbankquelle des Mailmerge-Objekts explizit schliessen?
Vielen Dank!
ehvbs[/list]