von SCAL58 » Di, 09.03.2021 20:32
Guten Abend Forum,
Ausgangssituation:
- verwendet wird eine LibreOffice Calc-Datei mit mehreren Tabellenblättern
- per Button soll eine Kopie nur von einem bestimmten Tabellenblatt erstellt werden und in eine neue Calc-Datei gepackt werden
- Ich habe mich an einem Makro aus dem Internet orientiert: ursprünglich hat dieses Makro eine PDF-Datei von einem bestimmten Bereich erstellt (funktioniert problemlos)
- meine Idee war, dass ich dachte ich könnte das Gleiche für eine .ods Datei machen -> erstelle eine neue Calc-Datei .ods von einem bestimmten Bereich aus einem Tabellenblatt
- es funktioniert leider nur bedingt...es wird zwar eine Datei erzeugt aber mit allen Tabellenblätter aus der ursprünglichen Calc-Datei - ich würde gerne aber nur ein bestimmtes Tabellenblatt übergeben
Ziel: ein bestimmter Bereich bzw. Tabellenblatt wird kopiert und in eine neue Calc-Datei .ods gepackt
mein angepasstes Makro:
Code: Alles auswählen
Sub SaveRange
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oSheet = ThisComponent.CurrentController.getActiveSheet()
oCellRange = oSheet.getCellRangeByName("A1:K50")
dim aFilterData(0) as new com.sun.star.beans.PropertyValue
aFilterData(0).Name = "Selection"
aFilterData(0).Value = oCellRange
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///C:/Test_Kopie.ods"
args1(1).Name = "FilterData"
args1(1).Value = aFilterData()
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
End Sub
Es gibt zwar viele ähnliche Beiträge aber ich konnte leider nicht fündig werden, was mich zu meiner Lösung führt (meine Makro- und Programmierkenntnisse sind auch nicht die Besten).
Danke im Voraus für Tipps & Anpassungen!
Guten Abend Forum,
Ausgangssituation:
[list]
verwendet wird eine LibreOffice Calc-Datei mit mehreren Tabellenblättern
[/list]
[list]per Button soll eine Kopie nur von einem bestimmten Tabellenblatt erstellt werden und in eine neue Calc-Datei gepackt werden
[/list]
[list]Ich habe mich an einem Makro aus dem Internet orientiert: ursprünglich hat dieses Makro eine PDF-Datei von einem bestimmten Bereich erstellt (funktioniert problemlos)
[/list]
[list]meine Idee war, dass ich dachte ich könnte das Gleiche für eine .ods Datei machen -> erstelle eine neue Calc-Datei .ods von einem bestimmten Bereich aus einem Tabellenblatt
[/list]
[list]es funktioniert leider nur bedingt...es wird zwar eine Datei erzeugt aber mit allen Tabellenblätter aus der ursprünglichen Calc-Datei - ich würde gerne aber nur ein bestimmtes Tabellenblatt übergeben
[/list]
Ziel: ein bestimmter Bereich bzw. Tabellenblatt wird kopiert und in eine neue Calc-Datei .ods gepackt
mein angepasstes Makro:
[code]
Sub SaveRange
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oSheet = ThisComponent.CurrentController.getActiveSheet()
oCellRange = oSheet.getCellRangeByName("A1:K50")
dim aFilterData(0) as new com.sun.star.beans.PropertyValue
aFilterData(0).Name = "Selection"
aFilterData(0).Value = oCellRange
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///C:/Test_Kopie.ods"
args1(1).Name = "FilterData"
args1(1).Value = aFilterData()
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
End Sub
[/code]
Es gibt zwar viele ähnliche Beiträge aber ich konnte leider nicht fündig werden, was mich zu meiner Lösung führt (meine Makro- und Programmierkenntnisse sind auch nicht die Besten).
Danke im Voraus für Tipps & Anpassungen!