Wir sind auf Ihre Unterstützung angewiesen!
💚 BITTE helfen Sie uns HEUTE mit einer SPENDE 💚
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 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
Beiträge: 2866
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 24.2.2.2 (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
Beiträge: 1659
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
Beiträge: 1659
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 nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten