Seite 1 von 1

[bedingt gelöst]Calc einzelne Tabelle als XLS-Datei speichern

Verfasst: Mo 6. Sep 2021, 07:37
von Ray123
Ich möchte gerne eine einzelne Tabelle per Makro als XLS-Datei speichern. Das folgende Makro erstellt mir zwar eine XLS-Datei, es werden aber alle Tabellen im Calc-Dokument gespeichert. Ich hätte gerne aber nur eine Tabelle davon,
z. B. Tabelle 2. Hat jemand eine Idee, wie ich das realisieren kann?

'* zum Speichern des Dokuments
Dim sDatName As String
Dim omyProps(0) as New com.sun.star.beans.PropertyValue

oDoc = ThisComponent
'* Speicherparameter
omyProps(0).Name = "FilterName"
omyProps(0).Value = "MS Excel 97"
.
.
.

'* Datei schreiben
sDatName = "c:\temp\xls\PlanBG.xls"
sDatName = converttourl (sDatName)
odoc.storeasurl (sDatName, omyProps())


Danke für Tipps
Ray

Re: Calc einzelne Tabelle als XLS-Datei speichern

Verfasst: Mo 6. Sep 2021, 10:06
von mikele
Hallo,
zunächst alle anderen Tabellen löschen und dann speichern?

Re: Calc einzelne Tabelle als XLS-Datei speichern

Verfasst: Mo 6. Sep 2021, 10:54
von Ray123
Das geht nicht, da die Tabellen vorformatiert sind und mittels Makro befüllt werden. Die Anzahl der zu erstellenden Tabellen ist auch erst während des Makrolaufs bekannt.

Re: Calc einzelne Tabelle als XLS-Datei speichern

Verfasst: Mo 6. Sep 2021, 11:17
von mikele
Hallo,
ich meinte schon, die überzähligen Tabellen per Makro zu löschen.
Alternativ erzeugst du ein neues Dokument und fügst dort das Tabellenblatt ein.

Re: Calc einzelne Tabelle als XLS-Datei speichern

Verfasst: Mo 6. Sep 2021, 12:05
von Ray123
Hallo Mikele,

das mit dem neuen Dokument habe ich auch schon überlegt und bin am Probieren. Es wäre halt schön gewesen, wenn man über Parameter das gewünschte Tabellenblatt direkt speichern hätte können.
Schöner Tag noch
Ray

Re: Calc einzelne Tabelle als XLS-Datei speichern

Verfasst: Mo 6. Sep 2021, 13:25
von karolus
Hallo

Code: Alles auswählen

………
………
sheets = doc.Sheets
names = sheets.ElementNames
for each sheetname in names
    if sheetname <> "Tabelle 2" then
        sheets.removeByName( sheetname )

……

Re: Calc einzelne Tabelle als XLS-Datei speichern

Verfasst: Fr 10. Sep 2021, 13:53
von Ray123
So, da es scheinbar die gewünschte Möglichkeit nicht gibt, habe ich es nun tatsächlich so realisiert, daß ich die Datei als Zieldatei speichere, die Arbeitsdatei dann nochmals unter anderen Name speichere, die Zieldatei öffne, die nicht gewünschten Tabellen lösche und danach die Zieldatei erneut speichere und in LO schließe.
Hier für evtl, Interessenten der grundsätzliche Code:

Code: Alles auswählen

	'* Datei schreiben
	sDatName1 =  "c:\temp\xls\Zieldatei.xls"
	sDatName1 = converttourl (sDatName1)
	odoc.storeasurl (sDatName1, omyProps())
	
	'* Datei neu schreiben, damit Zieldatei.xls geaendert werden kann
	sDatName2 =  "c:\temp\xls\Test.xls"
	sDatName2 = converttourl (sDatName2)
	odoc.storeasurl (sDatName2, omyProps())
	
	'* Zieldatei oeffnen zum Tabellen loeschen
	vDoc=StarDesktop.loadComponentFromURL (sDatName1, "_blank", 63, Arg())
	
	'* nun Tabellen loeschen
	oSheets = vDoc.Sheets
	oSheets.removeByName("Tabelle_x")
	oSheets.removeByName("Tabelle_z")
	oSheets.removeByName("Tabelle_12")
	
	'* und Datei wieder speichern und schließen
	vDoc.storeasurl (sDatName1, omyProps())
	vDoc.close(true)

Re: [bedingt gelöst]Calc einzelne Tabelle als XLS-Datei speichern

Verfasst: Fr 10. Sep 2021, 14:50
von karolus
hallo

Verwende ….storetoUrl(…Test.xls, … )
Dann kannst du auf dem geöffneten Original weiterarbeiten.

Re: [bedingt gelöst]Calc einzelne Tabelle als XLS-Datei speichern

Verfasst: Fr 10. Sep 2021, 15:32
von Ray123
Danke für den Tipp, das werde ich austesten...
Schönes Wochenende

Re: [bedingt gelöst]Calc einzelne Tabelle als XLS-Datei speichern

Verfasst: Fr 10. Sep 2021, 17:58
von Ray123
Mit storeToUrl wird der Code etwas kürzer, es entfällt der Teil mit der zweiten Speicherung:

Code: Alles auswählen

	'* Datei schreiben
	sDatName1 =  "c:\temp\xls\Zieldatei.xls"
	sDatName1 = converttourl (sDatName1)
	odoc.storetourl (sDatName1, omyProps())
	
	'* Zieldatei oeffnen zum Tabellen loeschen
	vDoc=StarDesktop.loadComponentFromURL (sDatName1, "_blank", 63, Arg())
	
	'* nun Tabellen loeschen
	oSheets = vDoc.Sheets
	oSheets.removeByName("Tabelle_x")
	oSheets.removeByName("Tabelle_z")
	oSheets.removeByName("Tabelle_12")
	
	'* und Datei wieder speichern und schließen
	vDoc.storeasurl (sDatName1, omyProps())
	vDoc.close(true)