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
Makro > ein bestimmtes Tabellenblatt in ein neues Dokukment
Moderator: Moderatoren
Re: Makro > ein bestimmtes Tabellenblatt in ein neues Dokukment
Hi,
hier mal eine Möglichkeit einen kopierten Zellbereich in ein neues Dokument einzufügen.
Viel Erfolg.
Jürgen
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
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Makro > ein bestimmtes Tabellenblatt in ein neues Dokukment
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?
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
Hallo,
Am besten machst Du einen neuen Thread mit einer genaueren Beschreibung Deines Vorhabens auf.
Jürgen
Wenn Du keine Formatierungen der Zellen kopieren willst geht folgendes:sule1979 hat geschrieben:Ist es möglich die Formel-Ausgabe (Ergebnis) zu kopieren?
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
Da weis ich nicht genau was Du meinst.sule1979 hat geschrieben:Kennst du evtl. eine Möglichkeit mit der Funktion "storetourl" und Druckbereich zu kopieren?
Am besten machst Du einen neuen Thread mit einer genaueren Beschreibung Deines Vorhabens auf.
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem