BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

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

Alles zur Programmierung im LibreOffice.
Antworten
Ray123
Beiträge: 101
Registriert: Di 9. Apr 2013, 12:05
Wohnort: Baden-Württemberg

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

Beitrag von Ray123 » Mo 6. Sep 2021, 07:37

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
Zuletzt geändert von Ray123 am Fr 10. Sep 2021, 13:54, insgesamt 1-mal geändert.
Win10 20H2 x64 LO7.1.0.3

mikele
Beiträge: 1642
Registriert: Mo 1. Aug 2011, 20:51

Re: Calc einzelne Tabelle als XLS-Datei speichern

Beitrag von mikele » Mo 6. Sep 2021, 10:06

Hallo,
zunächst alle anderen Tabellen löschen und dann speichern?
Gruß,
mikele

Ray123
Beiträge: 101
Registriert: Di 9. Apr 2013, 12:05
Wohnort: Baden-Württemberg

Re: Calc einzelne Tabelle als XLS-Datei speichern

Beitrag von Ray123 » Mo 6. Sep 2021, 10:54

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.
Win10 20H2 x64 LO7.1.0.3

mikele
Beiträge: 1642
Registriert: Mo 1. Aug 2011, 20:51

Re: Calc einzelne Tabelle als XLS-Datei speichern

Beitrag von mikele » Mo 6. Sep 2021, 11:17

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.
Gruß,
mikele

Ray123
Beiträge: 101
Registriert: Di 9. Apr 2013, 12:05
Wohnort: Baden-Württemberg

Re: Calc einzelne Tabelle als XLS-Datei speichern

Beitrag von Ray123 » Mo 6. Sep 2021, 12:05

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
Win10 20H2 x64 LO7.1.0.3

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

Re: Calc einzelne Tabelle als XLS-Datei speichern

Beitrag von karolus » Mo 6. Sep 2021, 13:25

Hallo

Code: Alles auswählen

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

……
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Ray123
Beiträge: 101
Registriert: Di 9. Apr 2013, 12:05
Wohnort: Baden-Württemberg

Re: Calc einzelne Tabelle als XLS-Datei speichern

Beitrag von Ray123 » Fr 10. Sep 2021, 13:53

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)
Win10 20H2 x64 LO7.1.0.3

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

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

Beitrag von karolus » Fr 10. Sep 2021, 14:50

hallo

Verwende ….storetoUrl(…Test.xls, … )
Dann kannst du auf dem geöffneten Original weiterarbeiten.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Ray123
Beiträge: 101
Registriert: Di 9. Apr 2013, 12:05
Wohnort: Baden-Württemberg

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

Beitrag von Ray123 » Fr 10. Sep 2021, 15:32

Danke für den Tipp, das werde ich austesten...
Schönes Wochenende
Win10 20H2 x64 LO7.1.0.3

Ray123
Beiträge: 101
Registriert: Di 9. Apr 2013, 12:05
Wohnort: Baden-Württemberg

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

Beitrag von Ray123 » Fr 10. Sep 2021, 17:58

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)
Win10 20H2 x64 LO7.1.0.3

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten