Seite 1 von 1
calc python macro freeze
Verfasst: Sa 24. Okt 2020, 12:28
von chris_muc
Wie kann ich die erste Reihe einfrieren?
Ich habe versucht mit:
Code: Alles auswählen
XSCRIPTCONTEXT.getDocument().getCurrentController().getActiveSheet().freeze_panes(1,1)
AttributeError: freeze_panes
Es hat aber nicht geklappt.
Re: calc python macro freeze
Verfasst: So 25. Okt 2020, 11:47
von Mondblatt24
Hallo,
chris_muc hat geschrieben: ↑Sa 24. Okt 2020, 12:28
Wie kann ich die erste Reihe einfrieren?
Über Menü
Ansicht → Zellen fixieren → Erste Spalte/Erste Zeile.
Gruß
Peter
Re: calc python macro freeze
Verfasst: So 25. Okt 2020, 13:32
von chris_muc
Mondblatt24 hat geschrieben: ↑So 25. Okt 2020, 11:47
Über Menü
Ansicht → Zellen fixieren → Erste Spalte/Erste Zeile.
Und wie kann ich das von einem Python Macro ausfuehren?
Re: calc python macro freeze
Verfasst: Mo 26. Okt 2020, 10:17
von mikele
Re: calc python macro freeze
Verfasst: Mo 26. Okt 2020, 15:05
von chris_muc
Also freezing von CurrentDocument ist tatsaechlich einfach und fast wie im Doc von mikele:
Code: Alles auswählen
XSCRIPTCONTEXT.getDocument().getCurrentController().freezeAtPosition(0,1)
Wenn man aber ein anderes Sheet frieren moechte, muss man Dispatcher nutzen:
Code: Alles auswählen
# coding: utf-8
from __future__ import unicode_literals
import uno
from com.sun.star.beans import PropertyValue
def create_instance(name, with_context=False):
if with_context:
instance = SM.createInstanceWithContext(name, CTX)
else:
instance = SM.createInstance(name)
return instance
def call_dispatch(doc, url, args=()):
frame = doc.getCurrentController().getFrame()
dispatch = create_instance('com.sun.star.frame.DispatchHelper')
dispatch.executeDispatch(frame, url, '', 0, args)
return
def jumpFreeze(*args):
args = ['']
args[0] = PropertyValue() # Default constructor
args[0].Name = "Nr"
args[0].Value = 2
call_dispatch(doc, '.uno:JumpToTable',args)
call_dispatch(doc, '.uno:FreezePanesFirstRow')
CTX = uno.getComponentContext()
SM = CTX.getServiceManager()
doc = XSCRIPTCONTEXT.getDocument()
jumpFreeze()
Re: calc python macro freeze
Verfasst: Mo 26. Okt 2020, 17:46
von mikele
Hallo,
Wenn man aber ein anderes Sheet frieren moechte, muss man Dispatcher nutzen
Muss man nicht zwingend:
Code: Alles auswählen
oDoc=XSCRIPTCONTEXT.getDocument()
oCtrl=oDoc.CurrentController
oTab=oDoc.Sheets.getByName("Tabelle2")
oCtrl.setActiveSheet(oTab)
oCtrl.freezeAtPosition(0,1)
sollte auch funktionieren.
Aber so habe ich gelernt, wie ich den Dispatcher per Python aufrufe ...
Re: calc python macro freeze
Verfasst: Mo 26. Okt 2020, 23:37
von chris_muc
Vielen Dank.
Wieder etwas gelernt
