Seite 1 von 1
Calc, letzte Spalte, letzte Zeile ?
Verfasst: Do, 31.01.2008 13:59
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
Re: Calc, letzte Spalte, letzte Zeile ?
Verfasst: Do, 31.01.2008 14:36
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
Re: Calc, letzte Spalte, letzte Zeile ?
Verfasst: Do, 31.01.2008 16:47
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
Re: Calc, letzte Spalte, letzte Zeile ?
Verfasst: Do, 31.01.2008 18:37
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:
Was möchtest du denn weiter tun ?
Gruß Karo
Re: Calc, letzte Spalte, letzte Zeile ?
Verfasst: Do, 31.01.2008 19:22
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
Re: Calc, letzte Spalte, letzte Zeile ?
Verfasst: Do, 31.01.2008 20:10
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