BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] in geöffneter Tabelle das Blatt wechseln wie?

Alles zur Programmierung im LibreOffice.
wega
Beiträge: 121
Registriert: Mi 16. Jul 2014, 19:15

[gelöst] in geöffneter Tabelle das Blatt wechseln wie?

Beitrag von wega » Fr 16. Sep 2022, 15:37

Hallo zusammen,

ich habe jetzt mehrere Optionen
wie getByName bzw Sheets(index) probiert und komme zu keinem Ergebnis.

meine Sequenz lautet wie folgt:

Code: Alles auswählen

	Blatt = Tabelle.Sheets(1)
	Blatt.getcellRangeByName("A1").String = "Die " & ll & "-te Eigenschwingung hat die Eigenfrequenz " & omr
als Meldung bekomme ich:
BASIC-Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden: Sheets.

Kann mir irgendwer schreiben wie der Übergang von einem zum anderen Tabellenblatt gelingt?

Mit freundlichem Gruß
Werner
Zuletzt geändert von wega am Di 20. Sep 2022, 12:43, insgesamt 1-mal geändert.

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

Re: in geöffneter Tabelle das Blatt wechseln wie?

Beitrag von karolus » Fr 16. Sep 2022, 19:23

Wie kommt den aktuell das Objekt Tabelle zustande?
Warum zeigst du nur 2 Codezeilen mitten aus der Lameng?
Warum benutzt du immer noch nicht mri?
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

wega
Beiträge: 121
Registriert: Mi 16. Jul 2014, 19:15

Re: in geöffneter Tabelle das Blatt wechseln wie?

Beitrag von wega » Fr 16. Sep 2022, 19:50

Hallo karolus,
erst einmal Danke, dass Du geantwortet hast.

Die Tabelle wird in meinem Programm mit folgendem Code
geöffnet.

Code: Alles auswählen

'**************************************************************
' Tabelle oeffnen
'**************************************************************
'
Sub Tabelle_oeffnen (Tabelle)
	Dim Mappe as object
	Dim dummy()
    dim myFileProp() as new com.sun.star.beans.PropertyValue
    	
	url=converttourl("\home\buero\Libreoffice-Basic\eigene-BASIC-Programme\Balkenschwinger-Kenngroeszen.ods")

    Mappe = StarDesktop.loadComponentFromURL(url, "_blank", 0, myFileProp() )
	Tabelle = Mappe.getSheets().getbyIndex(0)
End Sub
Das funktioniert auch so weit ganz gut, da ich aus dieser Datei (sprich dem ersten Tabellenblatt) Informationen
zum Programm auslese.
Im weiteren Fortlauf des Programms möchte ich die Teilergebnisse in ein zweites Tabellenblatt schreiben, welches ich "Ausgabe" genannt habe.

Zur Kontrolle, ob die CALC-Tabelle noch aktiviert ist, habe ich mit folgender Sequenz

Code: Alles auswählen

msgbox tabelle.getcellRangeByName("A14").string
noch einmal vom ersten Tabellenblatt eine Information gezogen, die in "A14" steht. RESULTAT: -> es funktioniert.

Wie aber aktiviere ich jetzt das zweite Tabellenblatt, um da hinein Informationen zu schreiben.
Ich bekomme bei Sheets so wohl auch bei getByName nur Fehlermeldungen.

Meine vergeblichen Versuche stelle ich einmal vor:

Code: Alles auswählen

	'AllSheets = Tabelle.Sheets
	'msgbox AllSheets.string
	msgbox tabelle.getcellRangeByName("A14").string
	'aktiviereTabelle_Nummerzwei
	Sheets = document.Sheets  'get the container of all Sheets
	Blatt = Sheets.getByName("Ausgabe")   'get the sheet named Sheet2
	Controller = document.getcurrentController
	Controller.setActiveSheet(Blatt)
	'Controller = document.getcurrentController
	'Controller.setActiveSheet(Sheet) 
	'Blatt = Sheet.getByName("Ausgabe")
	Blatt.getcellRangeByName("A1").String = "Die " & ll & "-te Eigenschwingung hat die Eigenfrequenz " & omr


Da wäre ich dem Ratschlag bzw. der Hilfe eines erfahrenen Programmiers dankbar.

Mit freundlichem Gruß
Werner

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

Re: in geöffneter Tabelle das Blatt wechseln wie?

Beitrag von karolus » Fr 16. Sep 2022, 20:14

Hallo

Gut - dann geh doch mal Zeile für Zeile durch den oberen Code.
Mappe ist der Bezug aufs Document.
da hast du bereits die Methoden …getSheets() benutzt, und nachher:

Code: Alles auswählen

Tabelle = ……getByIndex(0) 'die erste Tabelle
Daraus solltest du doch auch ableiten können das du die nächste Tabelle zuweisen kannst per

Code: Alles auswählen

ausgabe = Mappe.getSheets().getByIndex(1)
wobei Basic hier auch einen abgekürzten Index-zugriff erlaubt:

Code: Alles auswählen

ausgabe = Mappe.Sheets(1)
Da du erwähnst das dieses Tabellenblatt den Namen Ausgabe hat.

Code: Alles auswählen

ausgabe = Mappe.Sheets.getByName("Ausgabe")  '# geht auch!
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

wega
Beiträge: 121
Registriert: Mi 16. Jul 2014, 19:15

Re: in geöffneter Tabelle das Blatt wechseln wie?

Beitrag von wega » Fr 16. Sep 2022, 20:36

Hallo karolus,

so, mit Deiner hilfe habe ich mal Ordnung in meinem Code gebracht.

Versuch Nr. 1

Code: Alles auswählen

	msgbox tabelle.getcellRangeByName("A14").string
	Blatt = Tabelle.getSheets().getByIndex(1)
	'Blatt = Tabelle.Sheets(1)
	Blatt.getcellRangeByName("A1").String = "Die " & ll & "-te Eigenschwingung hat die Eigenfrequenz " & omr
Ergebnis:
Die msgbox zeigt an: -> einseitig eingespannt und anderseitig aufliegend <-- RICHTIG, kommt von Index(0)
Nachfolgend die Fehlermeldung: -> BASIC-Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden: getSheets.

Versuch Nr. 2

Code: Alles auswählen

	msgbox tabelle.getcellRangeByName("A14").string
	'Blatt = Tabelle.getSheets().getByIndex(1)
	Blatt = Tabelle.Sheets(1)
	Blatt.getcellRangeByName("A1").String = "Die " & ll & "-te Eigenschwingung hat die Eigenfrequenz " & omr
Ergebnis:
Die msgbox zeigt an: -> einseitig eingespannt und anderseitig aufliegend <-- RICHTIG, kommt von Index(0)
Nachfolgend die Fehlermeldung: -> BASIC-Laufzeitfehler.
BASIC-Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden: Sheets.

Was übersehe ich, was verstehe ich nicht?

Mit freundlichem Gruß
Werner

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

Re: in geöffneter Tabelle das Blatt wechseln wie?

Beitrag von karolus » Fr 16. Sep 2022, 20:49

Nein Tabelle kennt diese Methode nicht, aber Mappe würde es kennen.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

wega
Beiträge: 121
Registriert: Mi 16. Jul 2014, 19:15

Re: in geöffneter Tabelle das Blatt wechseln wie?

Beitrag von wega » Fr 16. Sep 2022, 20:59

Hallo karolus,

in beiden Fällen habe ich Tabelle gegen Mappe getauscht.

Das Ergebnis ist die Fehlermeldung:
BASIC-Laufzeitfehler.
Objektvariable nicht belegt.

Und das , obwohl in der Dimensiondeklarierung
Dim Mappe as object
beschrieben ist.

Schon merkwürdig oder?

Mit Gruß
Werner

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

Re: in geöffneter Tabelle das Blatt wechseln wie?

Beitrag von karolus » Fr 16. Sep 2022, 21:27

Tut mir leid, du zeigst da immer nur Bruchstücke, anscheinend wird die zuerst gezeigte Prozedur von irgendeiner anderen Prozedur aufgerufen??
Das alles zusammen mit deinem Kraut und Rüben Rate-schema kann man von aussen nicht nachvollziehen… da musst du zunächst mal selber eine Struktur reinbringen die du auch verstehst.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

wega
Beiträge: 121
Registriert: Mi 16. Jul 2014, 19:15

Re: in geöffneter Tabelle das Blatt wechseln wie?

Beitrag von wega » Fr 16. Sep 2022, 21:59

Hallo karolus,

Ich glaub, da hast Du vollkommen recht.

Meine Schwierigkeit besteht darin, ein Fortran IV Programm aus meiner Studienzeit
in ein heutiges BASIC - Programm, wie das von LibreOffice zu übertragen.

Die vielfachen GOTO -Sprünge (vor und zurück) machen das Übertragen in heutige
Dialekte nicht gerade einfach.

Mitlerweile denke ich aber auch, dass das LibreOffice ein Problem hat, aus BASIC heraus
eine CALC-Datei zu manipulieren.
Denn, das BASIC aus einem CALC-Programm heraus aufgerufen kommt mit den
Befehlen um "sheet" herum klar.
Denn da funktionieren die Aufrufe.

Aber dennoch, vielen Dank, dass Du dir die Zeit für mein Problem genommen hast.

Mit freundlichem Gruß
Werner

Wanderer
Beiträge: 895
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: in geöffneter Tabelle das Blatt wechseln wie?

Beitrag von Wanderer » Fr 16. Sep 2022, 22:27

wega hat geschrieben:
Fr 16. Sep 2022, 21:59
...
Meine Schwierigkeit besteht darin, ein Fortran IV Programm aus meiner Studienzeit
in ein heutiges BASIC - Programm, wie das von LibreOffice zu übertragen.
Am besten ganz klassisch erstmal ein Flussdiagramm zeichnen...
Die vielfachen GOTO -Sprünge (vor und zurück) machen das Übertragen in heutige
Dialekte nicht gerade einfach.
Ich würde es zwar nicht empfehlen, aber notfalls kann BASIC immer noch goto.
Mitlerweile denke ich aber auch, dass das LibreOffice ein Problem hat, aus BASIC heraus
eine CALC-Datei zu manipulieren.
Ist mir bisher nicht aufgefallen...
Denn, das BASIC aus einem CALC-Programm heraus aufgerufen kommt mit den
Befehlen um "sheet" herum klar.
Denn da funktionieren die Aufrufe.
Was die Frage aufwirft, von wo Du die Routine startest, wenn nicht aus einem Calc-Dokument ??
...
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten