Seite 1 von 1
Makro wird nur teilweise aufgezeichnet
Verfasst: Fr, 14.08.2015 16:55
von Oohh
Hallo - ich bin hier neu und Makrofrischling.
Ich habe ein Makro aufgezeichnet.
(Im offenen Dokument - Datei - Drucken - ok)
Ergebnis:
Code: Alles auswählen
sub Drucktesteinfach
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:Print", "", 0, Array())
end sub
Fazit: Das Makro druckt nicht.
Die Aktivierung der untersten Zeile (dispatcher....) ist ebenfalls ergebnislos.
Was ist zu tun ?
Danke & Grüße Oohhh
Re: Makro wird nur teilweise aufgezeichnet
Verfasst: Fr, 14.08.2015 17:10
von Stephan
nur um zu drucken reicht eine Zeile:
Code: Alles auswählen
sub Drucktesteinfach
ThisComponent.Print(Array())
end Sub
Muss irgendwas beim Drucken konfiguriert werden siehe z.B.:
http://www.starbasicfaq.de/WiekannmanDo ... l#Zweig158
Gruß
Stephan
Re: Makro wird nur teilweise aufgezeichnet
Verfasst: Sa, 15.08.2015 13:47
von Oohh
Vielen Dank für die schnelle Hilfe.
Ich habe jetzt stundenlang diverse FAQ´s & OpenOffice org Makros Erklärt durchstöbert
(von verstanden kann man hier deutlich nicht reden

)
Ich beginne:
Code: Alles auswählen
Option Explicit
sub Drucktesteinfach
rem
rem Festlegung Drucker 1
dim args(0) as New com.sun.star.beans.PropertyValue
args(0).Name = "Printer"
args(0).Value = "Xerox weiß "
rem
rem Kontrolle Inhalt Var args
rem
call VarControlPrinter
rem
rem Druckroutine Druck aktuelles Dokument
dim myDoc as object
rem
myDoc=ThisComponent
myDoc.print(args())
rem
sub VarControlPrinter
rem
rem Variablen Definition
dim myDoc as object
dim myprinter as object
rem
rem Kontrolle Inhalt Var
myDoc=thiscomponent
myprinter=mydoc.getPrinter
msgbox myPrinter(0).value
rem
rem
end sub
1.) die Druckvariante über dispatch etc bekomme ich nicht hin, mehrfach versucht, also
2.) für mich funktionierende Druckvariante inkl. call VarControlPrinter subroutine zwecks Auslesen
des aktuell verwendeten Druckernamens.
Frage:
Ziel soll u.a. sein: Aktives Dokument soll über Druckertreiber "Standard" auf weißem Papier und
danach über Druckertreiber "KopieBlau" auf farbigem Papier gedruckt werden (hier andere Papierkassette konfiguriert). Und: bei Kopiedruck soll "Aktenexemplar" auf Kopie in bestimmten Rahmen gedruckt und mit
abgespeichert werden.
So.
Der
Druckerwechsel gelingt mir überhaupt nicht.
Anscheinend nimmt das Makro IMMER den Standarddrucker.
Hilfe ?! Bitte
Grüße
Re: Makro wird nur teilweise aufgezeichnet
Verfasst: So, 16.08.2015 07:57
von Stephan
Der Druckerwechsel gelingt mir überhaupt nicht.
Anscheinend nimmt das Makro IMMER den Standarddrucker.
Da ich Dein Makro mit dem Du das tust nicht kenne (das gepostete Makro führt m.E. keinen Druckerwechsel durch sondern druckt gleich auf einem bestimmten Drucker, kann ich dazu nur sagen das der Druckerwechsel bei mir sowohl per Makroaufzeichnung:
Code: Alles auswählen
sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Printer"
args1(0).Value = "Microsoft XPS Document Writer"
dispatcher.executeDispatch(document, ".uno:Printer", "", 0, args1())
end sub
als auch mittels des entsprechenden (angepassten) Makros unter dem von mir angegebenen Link:
Code: Alles auswählen
Sub DruckerWahl
Dim printprops(0) as New com.sun.star.beans.PropertyValue
printprops(0).Name = "Name"
printprops(0).Value = "Microsoft XPS Document Writer"
ThisComponent.setPrinter(printprops())
End Sub
funktioniert.
Gruß
Stephan
Re: Makro wird nur teilweise aufgezeichnet
Verfasst: So, 16.08.2015 13:42
von Oohh
Vorab danke !
Ich versuche gerade Deine Vorschläge hier auszuprobieren.
Irrsinnigerweise erfolgt wahlweise
Basic Laufzeitfehler
Eigenschaft oder Methode nicht gefunden
und zwar für setPrinter, print, CurrentController ....
Das Makro ist derzeit unter "meine Makros" abgespeichert.
Neustart, was auch immer - das Teil will mich schaffen.
Bin derzeit ratlos.
Grüße Oohh
Re: Makro wird nur teilweise aufgezeichnet
Verfasst: So, 16.08.2015 13:58
von Stephan
Irrsinnigerweise erfolgt wahlweise
Basic Laufzeitfehler
Eigenschaft oder Methode nicht gefunden
und zwar für setPrinter, print, CurrentController ....
Was soll daran irrsinnig sein?
Hast Du geprüft das Du das richtige ThisComponent-Objekt ansprichst?
Bist Du sicher das das Dokument sichtbar ist währendessen Du das Makro startest und nicht z.B. die Basic-IDE?
Gruß
Stephan
Re: Makro wird nur teilweise aufgezeichnet
Verfasst: So, 16.08.2015 14:16
von Oohh
Hüstel
Bist Du sicher das das Dokument sichtbar ist währendessen Du das Makro startest und nicht z.B. die Basic-IDE?
eijeijei. Auhweia.
Jetzt funzt´s wie am Schnürchen:
Code: Alles auswählen
Sub DruckOriginaluKopie
rem ----------------------------------------------------------------------
Dim printprops(0) as New com.sun.star.beans.PropertyValue
printprops(0).Name = "Name"
printprops(0).Value = "Xerox weiß"
ThisComponent.setPrinter(printprops())
dim myDoc as object
myDoc = ThisComponent
myDoc.print(printprops())
Dim printprops2(0) as New com.sun.star.beans.PropertyValue
printprops2(0).Name = "Name"
printprops2(0).Value = "Xerox KopieBlau"
ThisComponent.setPrinter(printprops2())
myDoc = ThisComponent
myDoc.print(printprops2())
End Sub
DANKE !!!!
Den automatisierten Kopiestempel werde ich
erst einmal selbst versuchen.
Sonnige Grüße
Glücklicher Oohh