Ich habe eine Tabelle mit ca. 1000 Markierfeldern, da es immer 4 sind und diese sich wiederholen, habe ich die 4 kopiert und immer wieder eingefügt, das hat auch gut funktioniert.
Mein Problem ist jetzt aber noch, dass das Feld “Steuerelement-Eigenschaften → Daten → Verknüpfte Zelle” noch den Wert des ursprünglichen Markierfeldes hat.
Gibt es eine Möglichkeit das Feld “Verknüpfte Zelle” automatisch beim kopieren auf die Zielzelle ändert (so wie bei Formeln ja auch)?
Ich habe keine Möglichkeit gefunden, deshalb habe ich mit auch schon ein bisschen mit Makros beschäftigt (da ich Python kann aber nur mit Python Makro).
Ich habe es geschafft in einer Schleife alle Markierfelder zu durchlaufen und zum Beispiel die Schriftart zu ändern, aber das Feld “Verknüpfte Zelle” kann ich nicht ändern. Ich vermute es ist das Attribut “BoundField”, dieses lässt sich aber nicht einfach als String ändern, kann mir da jemand einen Tipp geben, wie das geht. Oder eine viel einfachere Lösung direkt beim kopieren nennen
Das ist mein bisheriger Code:
def link_checkboxes():
doc = XSCRIPTCONTEXT.getDocument()
sheet = doc.CurrentController.ActiveSheet
draw_page = sheet.DrawPage
total_shapes = draw_page.Count
for i in range(total_shapes):
shape = draw_page.getByIndex(i)
if shape.supportsService("com.sun.star.drawing.ControlShape"):
control = shape.Control
cell_address = shape.Anchor.CellAddress
cell = sheet.getCellByPosition(cell_address.Column, cell_address.Row)
cell_name = cell.AbsoluteName
#control.setPropertyValue("BoundField", cell_name) #Das hier gibt mir einen Error
control.setPropertyValue("FontName", "Calibri")
return None
So funktioniert der Code ohne Probleme, nur wenn ich BoundField ändern möchte kommt folgender Error:
com.sun.star.beans.PropertyVetoException: at C:/cygwin64/home/buildslave/source/libo-core/cppuhelper/source/propshlp.cxx:494 (Error during invoking function link_checkboxes in module file:///C:/Users/User/AppData/Roaming/LibreOffice/4/user/Scripts/python/checkbox_links.py (<class ‘ooo_script_framework.com.sun.star.beans.PropertyVetoException’>: at C:/cygwin64/home/buildslave/source/libo-core/cppuhelper/source/propshlp.cxx:494
File “C:\Program Files\LibreOffice\program\pythonscript.py”, line 916, in invoke
ret = self.func( *args )
File “C:\Users\User\AppData\Roaming\LibreOffice\4\user\Scripts\python\checkbox_links.py”, line 14, in link_checkboxes
control.setPropertyValue(“BoundField”, cell_name) #Das hier gibt mir einen Error
))
Vielen Dank an alle für eure Hilfe!