Seite 1 von 1

Nächste Änderung in Writer suchen

Verfasst: Mi, 15.04.2015 10:26
von MichaAlzt
Hallo,

ich habe ein Makro geschrieben, mit dem ich in einem langen Text schnell zur nächsten Änderung springen kann. Da ich nicht wirklich programmieren kann (nur ein bisschen VBA-Erfahrung), habe ich das Makro über den Makro-Recorder erstellt. Ich öffne während der Makro-Aufzeichnung einfach das Menü Bearbeiten/Änderungen/Akzeptieren_oder_verwerfen. Dann springt der Cursor wie gewünscht zur nächsten Änderung. Makro abspeichern. Fertig. So sieht der Code des fertigen Makros aus:

Code: Alles auswählen

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:AcceptTrackedChanges", "", 0, Array())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ShowTrackedChanges"
args2(0).Value = true

dispatcher.executeDispatch(document, ".uno:ShowTrackedChanges", "", 0, args2())

Es gibt nur ein Probem: Leider bleibt das Fenster "Änderungen akzeptiern oder verwerfen" nach Ausführung des Makros geöffnet. Wie kann ich es schließen?

P.S. Die einfachste Idee wäre natürlich, das Fenster während der Makroaufzeichnung zu schließen - dann funzt aber leider das ganze Makro nicht - warum auch immer. Habe alles in diese Richtung ausprobiert - aber ohne Erfolg.

Weiß jemand Rat?

Beste Grüße

Micha

Re: Nächste Änderung in Writer suchen

Verfasst: Mi, 15.04.2015 11:26
von Stephan
Weiß jemand Rat?
Ich bin zwar nicht allwissend (vielleicht weiß deshalb jemand anderes eine Lösung) aber ich kenne keinen Weg das Fenster unter diesen Umständen per Makro zu schließen.

(Wahrscheinlich müsste man deshalb die gesamte Programmierung anders machen um die Nutzung dieses Fensters zu umgehen, dass geht dann aber nicht per Makrorekorder aufzuzeichnen und ist auch nicht sooo einfach das ich eine Lösung bereits wüsste.)


Gruß
Stephan

Re: Nächste Änderung in Writer suchen

Verfasst: Mi, 15.04.2015 16:21
von mikeleb
Hallo,

das folgende Makro springt bei jedem Aufruf zur nächsten Änderung

Code: Alles auswählen

global nIndex as integer

Sub Main

	odoc=thiscomponent
	if isempty(nIndex) or nIndex=odoc.redlines.getcount() then nIndex=0
	omark=odoc.redlines.getbyindex(nIndex)
	oview=oDoc.GetCurrentController.ViewCursor
	oview.gotoRange(omark.redlineend,false)
	oview.gotoRange(omark.redlinestart,true)
	nIndex=nIndex+1

End Sub
edit : besser wäre vielleicht

Code: Alles auswählen

global nIndex as integer

Sub Main

	odoc=thiscomponent
	if isempty(nIndex) or nIndex>=odoc.redlines.getcount() then nIndex=0
	omark=odoc.redlines.getbyindex(nIndex)
	oview=oDoc.GetCurrentController.ViewCursor
	oview.gotoRange(omark.redlineend,false)
	oview.gotoRange(omark.redlinestart,true)
	nIndex=nIndex+1

End Sub
falls zwischendurch Änderungen am Text vorgenommen werden.