Aktive Zelle mit Inhalt aus GetDataArray füllen

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

Moderator: Moderatoren

LidiaS
*
Beiträge: 15
Registriert: Do, 28.08.2014 19:14

Aktive Zelle mit Inhalt aus GetDataArray füllen

Beitrag von LidiaS »

Guten Morgen Allerseits,

auch auf die Gefahr hin, dass die Antwort hier schon gegeben wurde (ich sie aber partout nicht finde) bitte ich Euch um Eure Hilfe:

Der Makro soll einfach als nächsten Schritt die mit GetDataArray in dem Tabellenblatt CSV geholten Daten in die aktive Zelle des Tabellenblattes CSV_Gesamt einfügen. Ich bekommes es aber nicht hin. Es ist bestimmt gaaaaaanz einfach, aber ich sehe den Wald vor lauter Bäumen nicht.

Nachfolgend mein bisheriger Code:

Code: Alles auswählen

sub CSV_Gesamt

Dim myDoc
Dim myView
Dim mySheet
Dim mySheets
Dim myRow
Dim myCell
Dim Cellrange
Dim Zellinhalt
Dim LeereZelle
Dim mySheet_CSV
Dim Zellinhalt_CSV
Dim mySheet_CSV_Gesamt
Dim Zellinhalt_CSV_Gesamt

myDoc = thisComponent
myView = myDoc.CurrentController 'benötigt man zum Aktivieren des gewählten Tabellenblattes
mySheet_CSV = myDoc.Sheets.GetByName("CSV") ' Wähle Datenblatt "CSV"
myView.setActiveSheet(mySheet_CSV) ' aktiviere Datenblatt CSV
Zellinhalt_CSV = mySheet_CSV.getCellRangeByName("A2:AD2").GetDataArray() ' "kopiere" Daten im Zellbereich
mySheet_CSV_Gesamt = myDoc.Sheets.GetByName("CSV_Gesamt") ' wähle Tabellenblatt "CSV_Gesamt"
myView.setActiveSheet(mySheet_CSV_Gesamt) ' aktiviere Tabellenblatt "CSV_Gesamt"
REM Gehe zur ersten freien Zeile im Tabellenblatt "CSV_Gesamt"
LeereZelle = mySheet_CSV_Gesamt.getCellRangeByName("A1:AD100").queryEmptyCells
getFirstEmptyRowInColumn = Split(LeereZelle.RowDescriptions(0)," ")
myRow = getFirstEmptyRowInColumn(1)
myCell =  mySheet_CSV_Gesamt.getCellRangeByName("A" & myRow)
ThisComponent.CurrentController.Select(myCell)

end sub
Bin gespannt wie es geht. Und über Korrekturen an meinem bisherigen Code wäre ich dankbar. Aber bitte so einfach wie möglich, damit ich es als Anfänger nachvollziehen kann (gerne mit Kommentaren :) ).

Ganz herlichen Dank im Voraus und einen schönen Tag
Lidia
LidiaS
*
Beiträge: 15
Registriert: Do, 28.08.2014 19:14

Re: Aktive Zelle mit Inhalt aus GetDataArray füllen

Beitrag von LidiaS »

Kleiner Nachtrag zum besseren Verständnis:

Natürlich soll der Zellbereich A2:AD2 übertragen werden. Im Tabellenblatt CSV sind die Zellen mit Formeln belegt (Daten werden in enem weiteren Tabellenblatt eingegeben und im Tabellenblatt CSV über Formeln gesammelt). In das Tabellenblatt CSV_Gesamt sollen die Zellen nur mit Werten gefüllt werden und bei jedem neuen Ausführen des Makros immer in die nächste freie Zeile geschrieben werden. Das Makro wird immer dann ausgeführt, wenn sich die Daten im Tabellenblatt CSV ändern. Diese sollen dann im Tabellenblatt CSV_Gesamt als Werte gesichert werden, bevor sie im Tabellenblatt CSV wieder gändert werden.

Ich hoffe es ist nachvollziehbar.

Viele Grüße
Lidia
Karolus
********
Beiträge: 7533
Registriert: Mo, 02.01.2006 19:48

Re: Aktive Zelle mit Inhalt aus GetDataArray füllen

Beitrag von Karolus »

Hallo

Möchtest du wirklich die Daten aus dem Bereich A2:AD2 in eine einzelne Zelle reinwürgen ??

( grundsätzlich kannst du schonmal sämtliche Zeilen rauswerfen in denen `CurrentController` oder `myView` benutzt wird. )
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LidiaS
*
Beiträge: 15
Registriert: Do, 28.08.2014 19:14

Re: Aktive Zelle mit Inhalt aus GetDataArray füllen

Beitrag von LidiaS »

Guten Morgen Karolus,
Möchtest du wirklich die Daten aus dem Bereich A2:AD2 in eine einzelne Zelle reinwürgen ??
Nein, da habe ich mich falsch ausgedrückt. Die Zellen sollen so beschreiben werden wie in dem Tabellenblatt CSV, nur mit Werten, nicht mit Formeln.

Viele Grüße
Lidia
Karolus
********
Beiträge: 7533
Registriert: Mo, 02.01.2006 19:48

Re: Aktive Zelle mit Inhalt aus GetDataArray füllen

Beitrag von Karolus »

Hallo

Code: Alles auswählen

sub CSV_Gesamt

    doc = thisComponent
    source_sheet = doc.Sheets.GetByName("CSV") 
    data = source_sheet.getCellRangeByName("A2:AD2").getDataArray() 
    
    target_sheet = doc.Sheets.getByName("CSV_Gesamt") 
    cursor = target_sheet.createCursor()
    cursor.gotoEndOfusedArea(0)
    row = cursor.RangeAddress.StartRow + 1

    targetrange =  target_sheet.getCellRangeByPosition(0, row, 29, row)
    targetrange.setDataArray( data )

end sub
ich denke, Kommentare brauchts da keine...

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LidiaS
*
Beiträge: 15
Registriert: Do, 28.08.2014 19:14

Re: Aktive Zelle mit Inhalt aus GetDataArray füllen

Beitrag von LidiaS »

Hallo Karolus,
ich denke, Kommentare brauchts da keine...
nein, der Code ist für mich sehr gut nachvollziehbar :D . Vielen Dank für die schnelle Hilfe und den sehr aufgeräumten Code. Funktioniert einwandfrei.

Viele Grüße
Lidia
Antworten