🍀 Bitte helfen Sie mit, das LibreOffice Forum zu erhalten. 🍀

❤️ DANKE >> << DANKE ❤️

Unterstützen Sie noch heute unsere Spendenkampagne für 2026.
>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

calc python macro freeze

Alles zur Programmierung im LibreOffice.
Antworten
chris_muc
Beiträge: 4
Registriert: Sa 24. Okt 2020, 12:13

calc python macro freeze

Beitrag von chris_muc » Sa 24. Okt 2020, 12:28

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.

Mondblatt24
* LO-Experte *
Beiträge: 3531
Registriert: Fr 3. Mär 2017, 17:12

Re: calc python macro freeze

Beitrag von Mondblatt24 » So 25. Okt 2020, 11:47

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
Win 11 (x64) ▪ LO 26.2.1.1 (x64) ▪ AOO Portable 4.1.15
Wenn Eure Frage zutreffend beantwortet wurde, seid so nett und fügt dem Betreff der Eingangsfrage [GELÖST] hinzu.

chris_muc
Beiträge: 4
Registriert: Sa 24. Okt 2020, 12:13

Re: calc python macro freeze

Beitrag von chris_muc » So 25. Okt 2020, 13:32

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?

mikele
* LO-Experte *
Beiträge: 2012
Registriert: Mo 1. Aug 2011, 20:51

Re: calc python macro freeze

Beitrag von mikele » Mo 26. Okt 2020, 10:17

Gruß,
mikele

chris_muc
Beiträge: 4
Registriert: Sa 24. Okt 2020, 12:13

Re: calc python macro freeze

Beitrag von chris_muc » Mo 26. Okt 2020, 15:05

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()

mikele
* LO-Experte *
Beiträge: 2012
Registriert: Mo 1. Aug 2011, 20:51

Re: calc python macro freeze

Beitrag von mikele » Mo 26. Okt 2020, 17:46

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 ...
Gruß,
mikele

chris_muc
Beiträge: 4
Registriert: Sa 24. Okt 2020, 12:13

Re: calc python macro freeze

Beitrag von chris_muc » Mo 26. Okt 2020, 23:37

Vielen Dank.
Wieder etwas gelernt :)


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten