Drukowanie szablonu Writer

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
nizz71
Posty: 2
Rejestracja: pn gru 05, 2016 7:25 pm

Drukowanie szablonu Writer

Post autor: nizz71 »

Witajcie,
mam problem - muszę za pomocą przycisku na formularzu w OpenOffice Base wydrukować szablon Writera który odwołuje się do danych z tej bazy danych z Base. Dotychczas pod tym przyciskiem zrobiłem akcję otwierającą ten szablon i ręcznie inicjowałem drukowanie już z Writera. Muszę niestety pominąć ten krok ręcznego inicjowania drukowania w Writerze i bezpośrednio zainicjować wydruk z poziomu makra podpiętego do przycisku na formularzu w Base.
Udało mi się jakoś wykombinować wysłanie wskazanego bezpośrednio w makro pliku do druku na wskazaną na sztywno drukarkę, ale niestety - próbując wydrukować szablon (*.ott) jak również nawet zwykły dokument (*.odt) z wstawionymi zmiennymi z bazy danych, nie drukują się wartości pól wyciągniętych z bazy danych, tylko nazwy zmiennych jakie były wstawione na szablonie (tzn. nie podmienia zmiennych na wartości z bazy, tylko drukuje nazwy tych zmiennych jakby były wpisane jako zwykły tekst).
Gdy drukuję z poziomu Writera, to program pyta mnie czy na pewno chcę wydrukować "korespondencję seryjną" i dzięki temu te zmienne się podmieniają - podczas druku z poziomu makra plik drukuje się od razu, bez pytania o zgodę tak jak Writer.
Idealnym rozwiązaniem dla mnie byłoby jakby po kliknięciu na ten przycisk na formularzu w Base pojawił się klasyczny dialog do wybrania drukarki i żeby na wydruku były odpowiednie wartości z bazy a nie nazwy zmiennych....

Załączam fragment makra jakim obecnie drukuję:

Kod: Zaznacz cały

Dim oSM, oDesk, oDoc As Object 'OOo objects
Dim OpenParam(0)  as New com.sun.star.beans.PropertyValue
Dim oOpts(1) As New com.sun.star.beans.PropertyValue
Dim oPrinter(0) As New com.sun.star.beans.PropertyValue

'Set oSM = CreateObject("com.sun.star.ServiceManager")
'Set oDesk = oSM.createInstance("com.sun.star.frame.Desktop")

OpenParam(0).name="Hidden"
OpenParam(0).value=True

oPrinter(0).name="Name"
oPrinter(0).value="Microsoft Print to PDF"

Set oDoc = StarDesktop.loadComponentFromURL(ConvertToURL(Tools.Strings.DirectoryNameoutofPath(ThisComponent.Parent.url,"/") & "/szablon.ott"), "_blank", 0, OpenParam())
oDoc.setPrinter(oPrinter)
oOpts(0).name="Name"
oOpts(0).value="<Microsoft Print to PDF>"
oOpts(1).name="Wait"
oOpts(1).value=False
oDoc.Print(oOpts())
OpenOffice 4.1.3 Windows 10
ODPOWIEDZ