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)