[GELÖST]Makro um zu bestimmtem Sheet zu wechseln...

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [GELÖST]Makro um zu bestimmtem Sheet zu wechseln...

Re: [GELÖST]Makro um zu bestimmtem Sheet zu wechseln...

von mikeleb » Mi, 04.02.2015 21:29

Hallo Sontagsflieger,

manchmal ist es nett einfach ein bisschen Geduld zu haben. Alle die hier helfen machen es rein privat, du solltest also nicht erwarten, dass sofort jemand eine Lösung für dich parat hat (http://www.libreoffice-forum.de/viewtop ... 12&t=14595)
Dein Problem lässt sich mit ein paar wenigen Zeilen lösen:

Code: Alles auswählen

	odoc=thiscomponent
	octrl=odoc.currentcontroller
	octrl.setactivesheet(odoc.sheets(3)) 'wechselt das aktuelle Tabellenblatt
	octrl.firstvisiblerow=0 'erste sichtbare Zeile
	octrl.firstvisiblecolumn=0 'erste sichtbare Spalte
	octrl.zoomvalue=80 'Zoom in %

Re: Makro um zu bestimmtem Sheet zu wechseln...

von TrueColor » Mi, 04.02.2015 14:33

Sonntagsflieger hat geschrieben:[...]der Recorder zeichnet im Gegensatz zu Zoomstufen keine Scroll-Bewegungen auf. [...]D.h. ich möchte oben links die Zelle A1 sehen können, egal wo ich zuletzt auf diesem Sheet war.
[Strg]+[Pos1] (unter Windows, unter Mac wird es wohl eine ähnliche Tastenkombination geben) setzt den Cursor in die Zelle A1, das zeichnet der Macrorecorder auf. Bei Bedarf kannst du dann auch mit den Cursortasten woanders hin navigieren.

Edit: reines Scrollen wird nicht aufgezeichnet, wohl aber Cursorbewegungen.

Re: Makro um zu bestimmtem Sheet zu wechseln...

von pmoegenb » Mi, 04.02.2015 14:13

[GELÖST]Makro um zu bestimmtem Sheet zu wechseln...

von Sonntagsflieger » Mi, 04.02.2015 14:05

Hallo liebe Leute,

ich habe mir ein Makro aufgezeichnet und als Button in die Symbolleiste gelegt mit dem ich - egal wo ich mich gerade in meiner LO Datei befinde - auf ein bestimmtes Sheet mit einer bestimmten Zoomstufe (80%) wechseln kann. Klappt so weit wunderbar. Wenn ich allerdings in besagtem Sheet irgendwo hin scrolle, es so lasse, das Sheet wechsle und wieder das Makro ausführe komme ich zwar in der gewünschten Zoomstufe im gewünschten Sheet an, allerdings zu dem Bereich zu dem ich das letzte Mal hingescrollt bin. Wie kann ich im Makro eine bestimmte Scroll-Position definieren bzw. einen bestimmten Bereich des Sheets festlegen? Mit der Aufzeichnung ist es nicht möglich, der Recorder zeichnet im Gegensatz zu Zoomstufen keine Scroll-Bewegungen auf.

Arbeite mit LO 4.3.5.2 und OSX 10.7.5

Freue mich auf Hilfe.

Code: Alles auswählen

sub SpringezuTabelle
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 = "Nr"
args1(0).Value = 3

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

rem ----------------------------------------------------------------------
dim args2(4) as new com.sun.star.beans.PropertyValue
args2(0).Name = "CharPreviewFontName.StyleName"
args2(0).Value = ""
args2(1).Name = "CharPreviewFontName.Pitch"
args2(1).Value = 2
args2(2).Name = "CharPreviewFontName.CharSet"
args2(2).Value = -1
args2(3).Name = "CharPreviewFontName.Family"
args2(3).Value = 5
args2(4).Name = "CharPreviewFontName.FamilyName"
args2(4).Value = "Liberation Sans"

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

rem -------------------------------------------------------------------

dim args3(3) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ZoomSlider.CurrentZoom"
args3(0).Value = 80
args3(1).Name = "ZoomSlider.SnappingPoints"
args3(1).Value = Array()
args3(2).Name = "ZoomSlider.SvxMinZoom"
args3(2).Value = 20
args3(3).Name = "ZoomSlider.SvxMaxZoom"
args3(3).Value = 600

dispatcher.executeDispatch(document, ".uno:ZoomSlider", "", 0, args3())

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


end sub
EDIT: also um es noch mal zu spezifizieren, ich will im Grunde in dem besagten Sheet bei Ausführung des Makros immer in der - ich nenn' es mal - "Ausgangsposition" sein. D.h. ich möchte oben links die Zelle A1 sehen können, egal wo ich zuletzt auf diesem Sheet war.

Nach oben