You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-de@openoffice.apache.org by "technik_div@jrsch.de" <te...@jrsch.de> on 2018/04/26 11:05:04 UTC

Makro druckt falsche Datei

Hallo,

ich habe ein Problem beim Drucken per makro.

ich habe eine be.ods Datei mit dem Makro Liste_drucken

gleichzeitig ist die Datei bu.odt offen.

ich rufe in be.ods das Makro drucken auf und es wird Bu.odt gedruckt. 
(bzw. will gedruckt werden)

Ich weiss nicht, woran das liegen könnte.


Horst

Hier das Makro. Das makro ist schon älter, man kann es eleganter lösen.

sub Liste_drucken
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")

dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 5
gehezu("Liste.a1:K20000") REM geht zu der Liste

rem ----------------------------------------------------------------------
dim args2(2) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Copies"
args2(0).Value = 1
args2(1).Name = "Selection"
args2(1).Value = true
args2(2).Name = "Collate"
args2(2).Value = false

dispatcher.executeDispatch(document, ".uno:Print", "", 0, args2())
end sub


---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


Re: Es wird immer die odt datei gedruckt, wenn eine offen ist. war: Makro druckt falsche Datei

Posted by Oliver Brinzing <Ol...@gmx.de>.
Hallo,

verknüpfe die Druck Schaltfläche im Dokument mit einem Makro und hole Dir das Dokument Object über 
das Event:

OPTION EXPLICIT
Sub Drucken(oEvt as Object)
	Dim oDoc as Object
	Dim oBtn as Object

	oBtn = oEvt.Source.Model
	oDoc = oBtn.getParent.getParent.getParent
	MsgBox oBtn.Name & Chr(13) & oDoc.URL
End Sub

Gruß
Oliver

Am 31.05.2018 um 14:26 schrieb technik_div@jrsch.de:
> Hallo,
> 
> findet sich keine Idee, woran das liegen könnte. Es wird immer die odt Datei gedruckt, wenn eine 
> offen ist statt der ods Datei, die gedruckt werden sollte.  Es ist nicht das Makro.
> 
> Woran kann das denn liegen.
> 
> 
> Horst
> 
> 
> 
> -------- Weitergeleitete Nachricht --------
> Betreff:     Makro druckt falsche Datei
> Datum:     Thu, 26 Apr 2018 13:05:04 +0200
> Von:     technik_div@jrsch.de <te...@jrsch.de>
> Antwort an:     users-de@openoffice.apache.org
> An:     users-de@openoffice.apache.org
> 
> 
> 
> Hallo,
> 
> ich habe ein Problem beim Drucken per makro.
> 
> ich habe eine be.ods Datei mit dem Makro Liste_drucken
> 
> gleichzeitig ist die Datei bu.odt offen.
> 
> ich rufe in be.ods das Makro drucken auf und es wird Bu.odt gedruckt.
> (bzw. will gedruckt werden)
> 
> Ich weiss nicht, woran das liegen könnte.
> 
> 
> Horst
> 
> Hier das Makro. Das makro ist schon älter, man kann es eleganter lösen.
> 
> sub Liste_drucken
> 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")
> 
> dim args1(0) as new com.sun.star.beans.PropertyValue
> args1(0).Name = "Nr"
> args1(0).Value = 5
> gehezu("Liste.a1:K20000") REM geht zu der Liste
> 
> rem ----------------------------------------------------------------------
> dim args2(2) as new com.sun.star.beans.PropertyValue
> args2(0).Name = "Copies"
> args2(0).Value = 1
> args2(1).Name = "Selection"
> args2(1).Value = true
> args2(2).Name = "Collate"
> args2(2).Value = false
> 
> dispatcher.executeDispatch(document, ".uno:Print", "", 0, args2())
> end sub
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
> For additional commands, e-mail: users-de-help@openoffice.apache.org
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


RE: Es wird immer die odt datei gedruckt, wenn eine offen ist. war: Makro druckt falsche Datei

Posted by Jörg Schmidt <jo...@j-m-schmidt.de>.
Hallo, 

> From: technik_div@jrsch.de [mailto:technik_div@jrsch.de] 
> Sent: Monday, June 04, 2018 10:38 AM
> To: users-de@openoffice.apache.org
> Subject: Re: Es wird immer die odt datei gedruckt, wenn eine 
> offen ist. war: Makro druckt falsche Datei

> Vermutlich muss ich OO mal neu installieren. Ich werde mich dann noch 
> mal melden.

Ganz sicher muss Du das nicht, denn dadurch ändert sich nichts.

Stattdessen benenne das OO-Benutzerverzeichnis um und starte OO dann neu:
http://de.openoffice.info/viewtopic.php?f=27&t=54231#p206070


Gruß
Jörg


---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


Re: Es wird immer die odt datei gedruckt, wenn eine offen ist. war: Makro druckt falsche Datei

Posted by "technik_div@jrsch.de" <te...@jrsch.de>.
Hallo alle, die geantwortet haben, danke erst einmal.

Ich habe die verschiedenen Vorschläge durchprobiert, aber es scheint ein 
Problem tiefer im System zu sein.

Bei den Testläufen war der Dokumenttitel immer korrekt eingetragen.

Der Fehler tritt auch auf, wenn ich direkt drucken will, also ohne Makro.

Vermutlich muss ich OO mal neu installieren. Ich werde mich dann noch 
mal melden.


Horst


Am 31.05.2018 um 14:26 schrieb technik_div@jrsch.de:
> Hallo,
>
> findet sich keine Idee, woran das liegen könnte. Es wird immer die odt 
> Datei gedruckt, wenn eine offen ist statt der ods Datei, die gedruckt 
> werden sollte.  Es ist nicht das Makro.
>
> Woran kann das denn liegen.
>
>
> Horst
>
>
>
> -------- Weitergeleitete Nachricht --------
> Betreff:     Makro druckt falsche Datei
> Datum:     Thu, 26 Apr 2018 13:05:04 +0200
> Von:     technik_div@jrsch.de <te...@jrsch.de>
> Antwort an:     users-de@openoffice.apache.org
> An:     users-de@openoffice.apache.org
>
>
>
> Hallo,
>
> ich habe ein Problem beim Drucken per makro.
>
> ich habe eine be.ods Datei mit dem Makro Liste_drucken
>
> gleichzeitig ist die Datei bu.odt offen.
>
> ich rufe in be.ods das Makro drucken auf und es wird Bu.odt gedruckt.
> (bzw. will gedruckt werden)
>
> Ich weiss nicht, woran das liegen könnte.
>
>
> Horst
>
> Hier das Makro. Das makro ist schon älter, man kann es eleganter lösen.
>
> sub Liste_drucken
> 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")
>
> dim args1(0) as new com.sun.star.beans.PropertyValue
> args1(0).Name = "Nr"
> args1(0).Value = 5
> gehezu("Liste.a1:K20000") REM geht zu der Liste
>
> rem 
> ----------------------------------------------------------------------
> dim args2(2) as new com.sun.star.beans.PropertyValue
> args2(0).Name = "Copies"
> args2(0).Value = 1
> args2(1).Name = "Selection"
> args2(1).Value = true
> args2(2).Name = "Collate"
> args2(2).Value = false
>
> dispatcher.executeDispatch(document, ".uno:Print", "", 0, args2())
> end sub
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
> For additional commands, e-mail: users-de-help@openoffice.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


RE: Es wird immer die odt datei gedruckt, wenn eine offen ist. war: Makro druckt falsche Datei

Posted by Jörg Schmidt <jo...@j-m-schmidt.de>.
Hallo, 

> From: Wolfgang Jäth [mailto:jawo.ml.hamster@arcor.de] 

> "document.Title" steht. Ich hab gerade mal ein bisschen herum 
> gespielt,
> und bei mir zumindest steht da steht immer korrekt /das/ 
> Dokument drin,

imho:
_wenn_ der Titel korrekt angezeigt wird, dann läuft auch das Makro richtig, ein andersartiger Fehler (richtige Titelanzeige und falscher Makrolauf) wäre völlig unerklärlich, denn der dazu nötig Bug im API (application programming interface) wäre längst vielen Nutzern aufgefallen.  

> bei dem ich auch "Extras => Makros => Ausführen => ..." [1] 
> aufgerufen habe.

So wollte es auch sein, deswegen ist mir das Problem ziemlich unerklärlich, gerade bei einem Dokumentmakro (ich könnte es auch für ein lokal gespeichertes Makro nicht erklären).

> [1] Btw. wollte ich das eigentlich bequemerweise auf eine Tastenkombi
> legen, aber irgendwie funktioniert das nur mit Tabellen-Dateien, nicht
> mit Writer; auch wenn ich im Anpassen-Dialog (X) OpenOffice 
> selektiere.

kann ich nicht bestätigen, sondrn funktioniert bei mir (getestet mit ALT+W unter AOO 4.1.5)



Gruß
Jörg


---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


Re: Es wird immer die odt datei gedruckt, wenn eine offen ist. war: Makro druckt falsche Datei

Posted by Wolfgang Jäth <ja...@arcor.de>.
Am 31.05.2018 um 16:19 schrieb Jörg Schmidt:
> Hallo,
>  
>> From: technik_div@jrsch.de [mailto:technik_div@jrsch.de] 
> 
>> findet sich keine Idee, woran das liegen könnte. Es wird 
>> immer die odt 
>> Datei gedruckt, wenn eine offen ist statt der ods Datei, die gedruckt 
>> werden sollte.  Es ist nicht das Makro.
>> 
>> Woran kann das denn liegen.
> 
> Es liegt in jedem Falle daran das das Makro den Bezug zum falschen ThisComponent-Objekt herstellt, warum es das aber tut, dafür habe ich bei einem im Dokument gespeicherten Makro spontan keine Erklärung.
> 
> Um das Drucken des richtigen Dokumentes zu erreichen musst Du notfalls die Herstellung des richtigen ThisComponent-Bezuges erzwingen indem Du anhand einer Eigenschaft das richtige Dokument bestimmst, z.B. am Titel.

Vielleicht sollte Horst überhaupt erst mal prüfen, was nach der
Zuweisung "document   = ThisComponent.CurrentController.Frame" in
"document.Title" steht. Ich hab gerade mal ein bisschen herum gespielt,
und bei mir zumindest steht da steht immer korrekt /das/ Dokument drin,
bei dem ich auch "Extras => Makros => Ausführen => ..." [1] aufgerufen habe.

Evtl. ist letzteres auch ein Ansatzpunkt, nämlich die Frage, wie genau
Horst das Makro aufruft. Und auch nochmal *ganz* genau überprüfen, wo
das Makro tatsächlich gespeicehrt ist (in einem der Dokumente? Unter
"Meine Maktros"? ...?).

[1] Btw. wollte ich das eigentlich bequemerweise auf eine Tastenkombi
legen, aber irgendwie funktioniert das nur mit Tabellen-Dateien, nicht
mit Writer; auch wenn ich im Anpassen-Dialog (X) OpenOffice selektiere.
Hab ich aber jetzt nicht genauer untersucht.

> 	rem get access to the document
> 	document   = tc.CurrentController.Frame
> 	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

Hier auf die "dispatcher"-Zeile nen Breakpoint setzen, und "document"
unten in den Beobachter eintragen, Makro starten, und dann im
Beobachtungsfeld nachschauen.

Wolfgang
-- 
Dank Donald Trump ist mir endgültig klar geworden: Es ist nicht der Turm
von Pisa, der in Schieflage geraten ist, es ist die Welt.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


RE: Es wird immer die odt datei gedruckt, wenn eine offen ist. war: Makro druckt falsche Datei

Posted by Jörg Schmidt <jo...@j-m-schmidt.de>.
Hallo,
 
> From: technik_div@jrsch.de [mailto:technik_div@jrsch.de] 

> findet sich keine Idee, woran das liegen könnte. Es wird 
> immer die odt 
> Datei gedruckt, wenn eine offen ist statt der ods Datei, die gedruckt 
> werden sollte.  Es ist nicht das Makro.
> 
> Woran kann das denn liegen.

Es liegt in jedem Falle daran das das Makro den Bezug zum falschen ThisComponent-Objekt herstellt, warum es das aber tut, dafür habe ich bei einem im Dokument gespeicherten Makro spontan keine Erklärung.

Um das Drucken des richtigen Dokumentes zu erreichen musst Du notfalls die Herstellung des richtigen ThisComponent-Bezuges erzwingen indem Du anhand einer Eigenschaft das richtige Dokument bestimmst, z.B. am Titel.

Sub Main
	Dim tc As Object
	
	alles = Stardesktop.getComponents
	elemente = alles.createEnumeration
	Do While elemente.hasmoreElements
		aktuell = elemente.NextElement
		If HasUnoInterfaces(aktuell, "com.sun.star.frame.XModel") Then
			If aktuell.title = "be.ods" Then
				tc = aktuell
				Exit Do
			End If
		End If
	Loop
	
	rem 
	----------------------------------------------------------------------
	rem define variables
	dim dispatcher as object
	rem 
	----------------------------------------------------------------------
	rem get access to the document
	document   = tc.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	
	dim args1(0) as new com.sun.star.beans.PropertyValue
	args1(0).Name = "Nr"
	args1(0).Value = 5
	gehezu("Liste.a1:K20000") REM geht zu der Liste
	
	rem 
	----------------------------------------------------------------------
	dim args2(2) as new com.sun.star.beans.PropertyValue
	args2(0).Name = "Copies"
	args2(0).Value = 1
	args2(1).Name = "Selection"
	args2(1).Value = true
	args2(2).Name = "Collate"
	args2(2).Value = false
	
	dispatcher.executeDispatch(document, ".uno:Print", "", 0, args2())
End Sub




Gruß
Jörg


---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


Es wird immer die odt datei gedruckt, wenn eine offen ist. war: Makro druckt falsche Datei

Posted by "technik_div@jrsch.de" <te...@jrsch.de>.
Hallo,

findet sich keine Idee, woran das liegen könnte. Es wird immer die odt 
Datei gedruckt, wenn eine offen ist statt der ods Datei, die gedruckt 
werden sollte.  Es ist nicht das Makro.

Woran kann das denn liegen.


Horst



-------- Weitergeleitete Nachricht --------
Betreff: 	Makro druckt falsche Datei
Datum: 	Thu, 26 Apr 2018 13:05:04 +0200
Von: 	technik_div@jrsch.de <te...@jrsch.de>
Antwort an: 	users-de@openoffice.apache.org
An: 	users-de@openoffice.apache.org



Hallo,

ich habe ein Problem beim Drucken per makro.

ich habe eine be.ods Datei mit dem Makro Liste_drucken

gleichzeitig ist die Datei bu.odt offen.

ich rufe in be.ods das Makro drucken auf und es wird Bu.odt gedruckt.
(bzw. will gedruckt werden)

Ich weiss nicht, woran das liegen könnte.


Horst

Hier das Makro. Das makro ist schon älter, man kann es eleganter lösen.

sub Liste_drucken
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")

dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 5
gehezu("Liste.a1:K20000") REM geht zu der Liste

rem ----------------------------------------------------------------------
dim args2(2) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Copies"
args2(0).Value = 1
args2(1).Name = "Selection"
args2(1).Value = true
args2(2).Name = "Collate"
args2(2).Value = false

dispatcher.executeDispatch(document, ".uno:Print", "", 0, args2())
end sub


---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


Re: Makro druckt falsche Datei

Posted by "technik_div@jrsch.de" <te...@jrsch.de>.
Hallo noch mal.

Ich habe das Problem auch in einem zweiten Dokument mit einfacherem 
Programm.

Gedruckt werden soll eine Calc Tabelle, die angewählt ist und in der 
auch das Makro liegt.

Gedruckt wird eine odt Tabelle, die auch offen ist, aber nicht angewählt.

Woran liegt das? Was kann man tun? (Außer die andere Datei schließen, 
was aber keine Option ist.)

Ich habe gerade versucht normal zu drucken und da wird auch die andere 
Datei gedruckt. Dann habe ich die odt Datei geschlossen, gedruckt und 
erhielt einen Fatal error mit Absturz

nach Neustart ist die odt nicht geöffnet und das Drucken funktioniert 
normal. Öffne ich die odt wieder, geht der Druckbefehl wieder an diese 
Datei.


Horst

Die sub ist wohl uninteressant, trotzdem hier:

sub AbrechnungDrucken
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(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Copies"
args1(0).Value = 1
args1(1).Name = "Collate"
args1(1).Value = true

dispatcher.executeDispatch(document, ".uno:Print", "", 0, args1())


end sub


Am 26.04.2018 um 13:05 schrieb technik_div@jrsch.de:
>
> rem -----------------------------------------


---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org