🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 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: 3345
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 25.2.5.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: 1930
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: 1930
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