Hallo zusammen,
momentan arbeiten wir auf der Arbeit noch mit MS Office und wollen nun versuchen auf OO3 umzutellen.
Aus MS Access(2003) will ich ein Open Office Text Dokument drucken. Bis jetzt habe ich es geschafft ein Dokument zu drucken und auch verschiedene Drucker anzusprechen. Ich würde nun gern auch den Papierschacht des Druckers auswählen können, bis jetzt ist mir das nicht gelungen. Ich habe schon zig Beiträge in Netz durchgelesen und auch das Programmierhandbuch für Basic(StarOffice 8 ) und die tutorial pdf dazu. Das Problem ist eben das MS access ja in vb und OO in Starbasic geschrieben wird, daher habe ich Probleme den Code anzupassen bzw umzuschreiben sodass er funktionnieren würde. bis jetzt habe ich folgendes um eine open office doc-vorlage(.ott) zu öffnen, zu füllen und zum drucker zu schicken :
Code: Alles auswählen
Dim objServiceManager As Object
Dim objDesktop, odoc As Object
Dim args() ' Eigenschaften für Öffnen der Vorlage
Dim arg1(2) As Object ' Druck - Eigenschaften
Dim sUrl As String ' Speicherpfad PDF
Dim myProps(0) ' Eigenschaften zur PDF Erstellung
Dim mPrinter(0) As Object ' Drucker - Eingenschaften
Set objServiceManager = CreateObject("com.sun.star.ServiceManager")
Set objDesktop = objServiceManager.createInstance("com.sun.star.frame.Desktop")
Set odoc = objDesktop.loadComponentFromURL(Pfad, "_blank", 0, args())
' Vorlage füllen
objDesktop.CurrentComponent.getBookmarks().getByName("Empfänger").getAnchor.setString (strData)
.... usw. die Vorlage füllen
'Drucker für das Doc wird ausgewählt
Set mPrinter(0) = MakePropertyValue("Name", "Drucker Progger")
' Eigenschaften für das Dokument setzen
odoc.Printer = mPrinter()
'**************DRUCK EIGENSCHAFTEN*******************
Set arg1(0) = MakePropertyValue("Sort", True)
Set arg1(1) = MakePropertyValue("Collate", True)
'Dokuemnt drucken
CallByName odoc, "print", VbMethod, arg1 'arg is an array of arguments (cf MakePropertyValue)
Set odoc = Nothing
Soweit funktioniert das alles. Ich hab jetzt im Prog-handbuch folgenden Code gefunden um die Seiten größe und das Format einzustellen:
Code: Alles auswählen
Dim Doc As Object
Dim Sheet As Object
Dim StyleFamilies As Object
Dim PageStyles As Object
Dim DefPage As Object
Doc = StarDesktop.CurrentComponent
StyleFamilies = Doc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Default")
DefPage.IsLandscape = True
DefPage.Width = 21000
DefPage.Height
Beim kompilieren erghalte ich eine Fehlermeldung - Sub oder Funktion nicht definiert. Kann ich das irgendiewie einbinden?
Im handbuch auf S.140 steht das man die Eigenschaft "PrinterPaperTray" wohl auch auf diese Weise verwenden kann ich nehme mal an
Bis jetz ist es mir aber noch nicht gelungen das in ms access umzusetzen. Ich weiß das diese Eigenschaften teilt dieses Dienstes sind "com.sun.star.style.PageProperties". Ich weiß jetz aber nicht genau wie ich das verwenden soll bzw. wie ich das in acces einbinden kann.
Kann mir das jemand helfen, oder ein paar tipps dazu geben?
Vielen dank
Gruß
Patrice
ich verwende OO 3.0.1 auf MS XP SP2