Calc, letzte Spalte, letzte Zeile ?

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

Moderator: Moderatoren

dherr
*
Beiträge: 17
Registriert: Mi, 23.01.2008 17:02

Calc, letzte Spalte, letzte Zeile ?

Beitrag von dherr »

Hallo zusammen,

bei Excel kann man bspw. mit solchen Befehlen
LetzteSpalte = ActiveSheet.Cells(6, Columns.Count).End(xlToLeft).Column
LetzteZeile = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
die letzte Spalte bzw. letzte Zeile des Sheets ermitteln, wobei leere Sp. oder leere Z. mit berücksichtigt werden.

Gibt es für Calc-Basic Ähnliches oder wie kann man diese Werte ermitteln?

Grüße-
Dietrich
Dietrich
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Calc, letzte Spalte, letzte Zeile ?

Beitrag von Karolus »

Hallo

Code: Alles auswählen

Sub letzte_nichtleere_Spalte_und_Zeile
	oSheet = thisComponent.sheets(0) '1.Blatt
	ocursor = oSheet.createCursor()
	ocursor.gotoStart()	
	ocursor.gotoEndofUsedArea(false)			'letzte Zelle des Bereiches
	letzteSpalte = ocursor.getRangeAddress.endColumn   'index letzte Spalte des Bereichs
	letzteZeile = ocursor.getRangeAddress.endRow   'index letzte Zeile des Bereichs
End Sub
Gruß Karo
Zuletzt geändert von Karolus am Do, 31.01.2008 19:14, insgesamt 1-mal geändert.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
dherr
*
Beiträge: 17
Registriert: Mi, 23.01.2008 17:02

Re: Calc, letzte Spalte, letzte Zeile ?

Beitrag von dherr »

Danke für den Tipp!

Aber bei mir im VB2005-Programm funktioniert es nicht. Ich mache Folgendes:

Code: Alles auswählen

        Dim oSM As Object    'Hauptobjekt fuer den Zugriff auf OpenOffice von VB.Net aus (SM: ServiceManager)
        Dim oDesk, oDoc, oSheet, oRange, oCell, oCursor As Object 'Objekte von der OpenOffice-Schnittstelle (API)
...
            oSM = CreateObject("com.sun.star.ServiceManager")        'OpenOffice instanziieren: Zwingend notwenig fuer die Kommunikation von VB.Net mit der OpenOffice API
            oDesk = oSM.createInstance("com.sun.star.frame.Desktop") 'Erstelle den ersten & wichtigsten Dienst
...
        Dim ladeZustand(0)
        ladeZustand(0) = oSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
        ladeZustand(0).Value = True
...
        Dim str As String = fName   'das ist der Dateiname der OO-Calc
        str = str.Replace("\", "/")
        str = "file:///" + str.Replace(":", "|")
        oDoc = oDesk.loadComponentFromURL(str, "_blank", 0, ladeZustand)
...
        oSheet = oDoc.getSheets().getByName("Tabelle1")     'Bezugspunkt: 1.Blatt der Mappe
        ocursor = oSheet.createCursor()
        ocursor.gotoStart()
        oCursor.gotoEnd()         'letzte Zelle des Bereiches
        lastSp = oCursor.getRangeAddress.endColumn   'index letzte Spalte des Bereichs
        lastZe = oCursor.getRangeAddress.endRow       'index letzte Zeile des Bereichs
...
Das Dokument wird richtig geöffnet, aber alles weitere funktioniert nicht. Der Cursor wird nicht gesetzt und die Indizes nicht ermittelt.
Muss ich eventuell noch einen speziellen Dienst initialisieren?

Gruß-
Dietrich
Dietrich
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Calc, letzte Spalte, letzte Zeile ?

Beitrag von Karolus »

Hallo Dietrich

'lastSp' und 'lastZe' speichern an dieser Stelle nur Spaltenindex und Zeilenindex der letzten benutzten Zelle, es wird noch nichts selektiert oder geschrieben.
prüfen kannst du das mit:

Code: Alles auswählen

....
msgbox (lastSp & "     " & lastZe )
Was möchtest du denn weiter tun ?

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Calc, letzte Spalte, letzte Zeile ?

Beitrag von Karolus »

Hallo Dietrich
Ich hab noch einen Fehler in meinem Makrocode entdeckt:
tausche die Zeile:
oCursor.gotoEnd()
gegen:
ocursor.gotoEndofUsedArea(false)

...gotoEnd springt von der Startzelle aus nur bis zur nächsten Bereichsgrenze leer|nichtleer bzw. nichtleer|leer

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
dherr
*
Beiträge: 17
Registriert: Mi, 23.01.2008 17:02

Re: Calc, letzte Spalte, letzte Zeile ?

Beitrag von dherr »

Hallo Karolus,

danke dir für die Mitarbeit! Mit der letzten Korrektur funktioniert alles!

Mein Code oben ist nur ein Ausschnitt aus meinem Programm. Nachdem die Werte für letzteSpalte und letzteZeile festgestellt sind, werde ich die Zellwerte auslesen, in ein Array speichern und dann in einem Datengrid anzeigen.

Ciao-
Dietrich
Dietrich
Antworten