Calc, letzte Spalte, letzte Zeile ?

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Calc, letzte Spalte, letzte Zeile ?

Re: Calc, letzte Spalte, letzte Zeile ?

von dherr » Do, 31.01.2008 20:10

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

Re: Calc, letzte Spalte, letzte Zeile ?

von Karolus » Do, 31.01.2008 19:22

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 ?

von Karolus » Do, 31.01.2008 18:37

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

Re: Calc, letzte Spalte, letzte Zeile ?

von dherr » Do, 31.01.2008 16:47

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 ?

von Karolus » Do, 31.01.2008 14:36

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

Calc, letzte Spalte, letzte Zeile ?

von dherr » Do, 31.01.2008 13:59

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

Nach oben