[gelöst] Bereich von ODS-Datei in ODS-Datei übernehmen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

kilix
****
Beiträge: 128
Registriert: So, 09.04.2023 11:27

[gelöst] Bereich von ODS-Datei in ODS-Datei übernehmen

Beitrag von kilix »

Hallo,
nachdem ich mit eurer Hilfe die Daten aus der CSV-Datei einlesen konnte. Bin ich jetzt beim nächsten Schritt: ich möchte in Datei1 einen Makro aufrufen, der die Datei2 öffnet und einen festen Bereich mit Inhalt einfügen in die Datei1 überträgt. Danach soll die Datei2 geschlossen werden.
Mit dem was ich aus dem CSV-Problem gelernt habe konnte ich zwar die Datei2 öffnen und schließen aber die Übertragung des Bereichs gelingt mir nicht.
Danke für eure Hilfe!
Zuletzt geändert von kilix am Sa, 13.05.2023 11:32, insgesamt 1-mal geändert.
Grüße
kilix
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Bereich von ODS-Datei in ODS-Datei übernehmen

Beitrag von mikeleb »

Hallo,
wie sieht denn dein bisheriger Versuch aus?
Gruß,
mikeleb
kilix
****
Beiträge: 128
Registriert: So, 09.04.2023 11:27

Re: Bereich von ODS-Datei in ODS-Datei übernehmen

Beitrag von kilix »

so:

Code: Alles auswählen

Sub Sassen_import

	'Zugriff auf die aktuelle Datei
	oDoc=ThisComponent

	'Öffnen der csv-Datei
	Dim args(1) as New com.sun.star.beans.PropertyValue
	args(0).Name= "FilterName"
	args(0).Value = "Text - txt - csv (StarCalc)"

	'Aktuelles Verzeichnis einlesen und Datei Sassen.ods öffnen
	surl = thiscomponent.url
	apfad = split(surl,"/")
	apfad(ubound(apfad)) = "sassen.csv"
   	sURL = convertToURL(join(apfad,"/"))
   	oODS = StarDesktop.LoadComponentFromURL(sURL, "_blank", 0, args())
   	
	'Auslesen der Daten in ein Array der Daten
	aDaten=oODS.Sheets(0).getCellRangeByName("A3:H10000").getDataArray
	'Schreiben der Daten in die aktuelle Datei
	oDoc.Sheets(0).getCellRangeByName("A3:H10000").setDataArray(aDaten)
	
	'Sassen-Datei schließen
	oODS.close(false)
	
End Sub
Hab einfach versucht deinen Code der CSV-Datei zu verwenden.
Grüße
kilix
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Bereich von ODS-Datei in ODS-Datei übernehmen

Beitrag von mikeleb »

Hallo,
und was funktioniert nicht?
Die Daten sollten korrekt übertragen werden.
Gruß,
mikeleb
kilix
****
Beiträge: 128
Registriert: So, 09.04.2023 11:27

Re: Bereich von ODS-Datei in ODS-Datei übernehmen

Beitrag von kilix »

es werden keine Daten übertragen.

stopp, halt, hab jetzt einen Fehler gefunden. Da steht ja noch die csv-Datei drin!. Ich seh mir das gleich an.
Grüße
kilix
kilix
****
Beiträge: 128
Registriert: So, 09.04.2023 11:27

Re: Bereich von ODS-Datei in ODS-Datei übernehmen

Beitrag von kilix »

Hab es korrigiert, funktioniert aber nicht.

Ich habe gestern im Internet ein PDF-Dokument von Michael Dannhöfer (nehme an, der Name ist bekannt) gefunden: StarOffice/OpenOffice.org Basic FAQ.
Darin werden eine Fülle von Fragen, wie beispielsweise "Wie kann man Zellbereiche kopieren?" usw mit Erläuterungen und den passenden Codes beantwortet. Das oben von mir angefragte Problem ist zwar nicht dabei aber einiges kann auch für mich interessant sein weil diese Fragen von der Anwendung her beantwortet werden. Ich habe mir auch das Dokument von Andrew Pitonyak angesehn. Damit kann ich zwar was Basic selbst betrifft etwas anfangen aber was UNO etc betrifft ist so theoretisch erklärt, dass ich es nicht verstehe weil mit die verwendeten Fachausdrücke nicht bekannt sind (ich komme von der Büro-Organisation und war nie Programmierer obwohl ich doch einiges in Dec Basic und FreeBasic programmiert habe).

Ich glaube aber mit eurer Hilfe, speziell zu dem obigen Problem, und wenn ich Fragen habe kann ich weiterkommen.

Zum obigen Problem habe ich noch eine Ergänzung: der zu kopierende Bereich auf Datei2 liegt in einer der 3 Tabellen und ist in eine der 2 Tabellen von Datei2 zukopieren. D.h. zum angefraten Problem kommt noch die Adressierung der Tabellen im Dokument dazu.

Für weitere Hilfe wäre ich sehr dankbar!
Grüße
kilix
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Bereich von ODS-Datei in ODS-Datei übernehmen

Beitrag von mikeleb »

Hallo,
dein Makro nimmt die Daten, die im Bereich A3:H10000 des 1. Tabellenblattes der sassen.csv stehen und trägt sie in die Zellen A3:H10000 des 1. Tabellenblattes des aktuellen Dokuments ein.
Der Zugriff auf die Tabellen erfolgt per

Code: Alles auswählen

.Sheets(0)
wobei die Zahl die interne Nummer der Tabelle angibt (die Zählung beginnt bei Null!)
Alternativ:

Code: Alles auswählen

oDoc.Sheets.getByIndex(0)
oder

Code: Alles auswählen

oDoc.Sheets.getByName("Tabelle1")
Gruß,
mikeleb
kilix
****
Beiträge: 128
Registriert: So, 09.04.2023 11:27

Re: Bereich von ODS-Datei in ODS-Datei übernehmen

Beitrag von kilix »

danke mikele!

ich denke mit dieser Art der Hilfe werde ich schon weiterkommen!
Grüße
kilix
kilix
****
Beiträge: 128
Registriert: So, 09.04.2023 11:27

Re: Bereich von ODS-Datei in ODS-Datei übernehmen

Beitrag von kilix »

Hallo, hat etwas gedauert weil ich anderweitig beschäftigt war. Aber jetzt habe ich die Lösung:
1.) war der Dateiname falsch: ich musste von einer ods-Datei, in der die Daten schon aufbereitet sind, und nicht der csv-Datei einlesen und
2.) das Kopieren hatte doch funktioniert, nur und das habe ich erst gestern erkannt, die Kopie ging an die falsche Tabelle. Ich wußte damals noch nicht dass die Null in

Code: Alles auswählen

	aDaten=oODS.Sheets(0).getCellRangeByName("A3:H10000").getDataArray
	'Schreiben der Daten in die aktuelle Datei
	oDoc.Sheets(0).getCellRangeByName("A3:H10000").setDataArray(aDaten)
die Nummer der Tabellen bezeichnen (war wohl von der für mich sehr ungewohneten Schreibweise irritiert :shock: ). Heute ist es mir klar und nachdem ich sie durch 1 ersetzt hatte passte alles.

Nachdem das gut ging werde ich ganz gut weiterkommen. Wenn ich Fragen habe melde ich mich gerne wieder. Auf jeden Fall jetzt schon ein herzliches Danke!
Grüße
kilix
Antworten