Inhalt aller Tabellenblätter in ein neues kopieren als 1. te Tabelle

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

Moderator: Moderatoren

MavMan
*
Beiträge: 10
Registriert: Mi, 03.07.2019 16:13

Inhalt aller Tabellenblätter in ein neues kopieren als 1. te Tabelle

Beitrag von MavMan »

Hallo Community,

ich habe eine Datei mit x-Tabellenblätter. Die Anzahl der Spalten und Beschriftungen sind immer die gleichen! Nur die Anzahl der benutzen Zeilen sind eben unterschiedlich und man muss das Ende der benutzen Zeilen ermitteln lassen. Das heisst der Range muss durch das Makro ermittelt werden.

Ziel ist es, dass alle Tabellenblätter auf eines kopiert wird und das soll ganz vorne also als erstes Tabellenblatt eingefügt werden. Später möchte ich dieses neu eingefügte Tabellenblatt als "Zusammenfassung" beschriften.

Könnt ihr mir helfen?
Im Forum habe ich alles durchsucht, aber keine Lösung so gefunden, die das joinen übernimmt und als erstes Tabellenblatt einfügt.
Ich habe noch keine Ahnung, wie ich das machen soll - bisher habe ich nur das winzige Grundgerüst.

Code: Alles auswählen

Sub ONLINE
	'Mit der Hilfe aus de.openoffice.info Community 
	'20191023 - Initiale Erstellung
	blattanzahl = ThisComponent.Sheets.Count
	For j = 0 To blattanzahl-1
		aktuelles_Blatt = ThisComponent.Sheets.getByIndex(j)
	.........
	Next j
End Sub
Meine Libre-Version ist die: Version: 6.0.7.3

Vielen Dank für Eure Hilfe und Gedanken....
Grüsse
MavMan
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Inhalt aller Tabellenblätter in ein neues kopieren als 1. te Tabelle

Beitrag von Toxitom »

Hey MavMan,
... bisher habe ich nur das winzige Grundgerüst....
hmm, jupp, das ist wirklich "sehr klein";))

Ich gebe Dir mal ein paar Denkanstöße:

1. Neues Tabellenblatt an Position 0 einfügen (Index 0 - mit dem der Methode "insertNewByName("Tabellenname", iIndex)")
2. Dann Deine Schleife von j = 1 bis blattzahl-1
3. dann in jedem Blatt: Tabellen-Cursor erzeugen. Methode: createCursor()
4. Cursor zur letzten benutzten Zelle bewegen, die kopiert werden soll (rechtsunten): oCursor.gotoEnd() -> Zelladresse auslesen. (Spalte/Zeile)
5. Zu kopierenden Bereich markieren: oCursor.getCellRangebyPosition(n1.Spalte, nObereZeile, nRechteSpalte, nUntereZeile) (jeweils Indexzahlen)
6. Inhalte Kopieren (getDataArray())
7. Auf Tabelle Index o gehen, dort die erste freie Zelle (Startzelle des Inhalts) identifizieren . Cursor erzeugen, Bereich markieren, der den Inhalt aufnehmen soll - wie oben mit getCellRangeByPosition)
8. Daten eintragen - setDataArray(aDaten)

Tia, das wäre der Ablauf.

alles nicht ganz trivial - ein wenig Eeinarbeitundszeit wirst Du Dir schon gönnen müssen :) ... und wenn es hakt... hier fragen.

Viele Grüße
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten