Makro > ein bestimmtes Tabellenblatt in ein neues Dokukment

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Makro > ein bestimmtes Tabellenblatt in ein neues Dokukment

Re: Makro > ein bestimmtes Tabellenblatt in ein neues Dokukment

von turtle47 » Fr, 18.06.2010 18:50

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

Re: Makro > ein bestimmtes Tabellenblatt in ein neues Dokukment

von sule1979 » Fr, 18.06.2010 18:24

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

von turtle47 » Fr, 18.06.2010 17:50

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

Makro > ein bestimmtes Tabellenblatt in ein neues Dokukment

von sule1979 » Fr, 18.06.2010 17:23

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

Nach oben