Seite 1 von 1
Makro > ein bestimmtes Tabellenblatt in ein neues Dokukment
Verfasst: Fr, 18.06.2010 17:23
von sule1979
Hallo zusammen,
so langsam bin ich am Verzweifeln ob mein Vorhaben überhaupt möglich ist.
Folgender Sachverhalt.
Bei einer bestehende ODS-Datei mit mehreren Tabellenblättern (z. B. Test1, Test2, Test3 ) soll ein bestimmtes Tabellenblatt (z. B. Test2) per
Makro in eine neue ODS-Datei gespeichert werden.
Das Vorhaben habe ich schon realisiert, jedoch mit PDF. Funktioniert einwandfrei.
Unzählige Codes aus dem Internet habe ich schon durchprobiert aber es wird immer die komplette ODS-Datei inkl. aller Tabellenblätter
in eine neue ODS-Datei gespeichert.
Hat einer von euch eine Idee wie man das bewerkstelligen kann?
Danke
Re: Makro > ein bestimmtes Tabellenblatt in ein neues Dokukment
Verfasst: Fr, 18.06.2010 17:50
von turtle47
Hi,
hier mal eine Möglichkeit einen kopierten Zellbereich in ein neues Dokument einzufügen.
Code: Alles auswählen
Sub CopyPasteRange()
Dim oSourceDoc, oSourceSheet, oSourceRange
Dim oTargetDoc, oTargetSheet, oTargetCell
Dim oDisp, octl
Dim NoArg()
oSourceDoc=ThisComponent
octl = oSourcedoc.getCurrentController()
oSourceframe = octl.getFrame()
oSourceSheet= oSourceDoc.Sheets().getbyName("Test2")
oSourceRange = oSourceSheet.getCellRangeByName("A1:F10")
oDisp = createUnoService("com.sun.star.frame.DispatchHelper")
octl.Select(oSourceRange)
oDisp.executeDispatch(octl, ".uno:Copy", "", 0, NoArg())
sURL = "private:factory/scalc"
oTargetDoc = Stardesktop.loadComponentFromURL(sURL, "_blank", 0, NoArg())
Sheet=oTargetDoc.createInstance("com.sun.star.sheet.Spreadsheet")
oTargetDoc.Sheets.insertNewByName("Test2",0)
oTargetSheet = oTargetDoc.getSheets.getbyName("Test2")
oTargetCell = oTargetSheet.getCellByPosition(0,0)
oTargetDoc.getCurrentController().Select(oTargetCell)
oTargetframe = oTargetDoc.getCurrentController().getFrame()
oDisp.executeDispatch(oTargetFrame, ".uno:Paste", "", 0, NoArg())
End Sub
Viel Erfolg.
Jürgen
Re: Makro > ein bestimmtes Tabellenblatt in ein neues Dokukment
Verfasst: Fr, 18.06.2010 18:24
von sule1979
Hallo Jürgen,
danke, das ist schon ein Ansatz aber nun habe ich das Problem, daß der kopierte Bereich mit Formeln hinterlegt ist,
d. h. beim Kopieren bekomme ich leere Zeilen.
Ist es möglich die Formel-Ausgabe (Ergebnis) zu kopieren?
Kennst du evtl. eine Möglichkeit mit der Funktion "storetourl" und Druckbereich zu kopieren?
Re: Makro > ein bestimmtes Tabellenblatt in ein neues Dokukment
Verfasst: Fr, 18.06.2010 18:50
von turtle47
Hallo,
sule1979 hat geschrieben:Ist es möglich die Formel-Ausgabe (Ergebnis) zu kopieren?
Wenn Du keine Formatierungen der Zellen kopieren willst geht folgendes:
Code: Alles auswählen
Sub CopyPasteRange()
Dim oSourceDoc, oSourceSheet, oSourceRange
Dim oTargetDoc, oTargetSheet, oTargetCell
Dim NoArg()
oSheetName = "Test2"
copyRange = "A1:F10"
oSourceDoc=ThisComponent
octl = oSourcedoc.getCurrentController()
oSourceframe = octl.getFrame()
oSourceSheet= oSourceDoc.Sheets().getbyName(oSheetName)
oSourceRange = oSourceSheet.getCellRangeByName(copyRange).getdataarray
sURL = "private:factory/scalc"
oTargetDoc = Stardesktop.loadComponentFromURL(sURL, "_blank", 0, NoArg())
Sheet=oTargetDoc.createInstance("com.sun.star.sheet.Spreadsheet")
oTargetDoc.Sheets.insertNewByName(oSheetName,0)
oTargetSheet = oTargetDoc.getSheets.getbyName(oSheetName)
oTargetSheet.getCellRangeByName(copyRange).setdataarray(oSourceRange)
myView = oTargetDoc.CurrentController
mySheet = oTargetDoc.Sheets.getByName(oSheetName)
myView.setActiveSheet(mySheet)
End Sub
sule1979 hat geschrieben:Kennst du evtl. eine Möglichkeit mit der Funktion "storetourl" und Druckbereich zu kopieren?
Da weis ich nicht genau was Du meinst.
Am besten machst Du einen neuen Thread mit einer genaueren Beschreibung Deines Vorhabens auf.
Jürgen