Wechseln zwischen Tabellen

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

Moderator: Moderatoren

Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Wechseln zwischen Tabellen

Beitrag von Stephan »

oDoc = StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, Array())

aber der weiterführende Code bezieht sich weiterhin auf die Ursprungstabelle, unter der auch das Makro gespeichert ist.
Wenn der weiterführende Code dispatch-Befehle enthält musst Du nach Erstellen der neuen Datei den Bezug des Dispatchers darauf herstellen, ungefähr so:

Code: Alles auswählen

oDoc = StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, Array()

document2   = oDoc
dispatcher2 = createUnoService("com.sun.star.frame.DispatchHelper")

dim args1(...) as new com.sun.star.beans.PropertyValue
args1(0).Name = ...
args1(0).Value = ...
...
dispatcher2.executeDispatch(document2, ".uno:...", "", 0, args1())
Wie kann ich die neueröffnete Tabelle ansprechen bzw. wie kann man generell zwischen Tabellen wechseln?
Einen 'generellen' Befehl gibt es nicht weil das Wechseln zwischen Tabellen eines Dokuments etwas Anderes ist als das Wechseln zwischen Tabellen verschiedener Dokumente. Wahrscheinlich solltest Du auch vom Dispatcher-Code wegkommen und besser nativen Code verwenden, einen ersten Einstieg bildet z.B.:
http://www.dannenhoefer.de/faqstarbasic ... -Calc.html



Gruß
Stephan
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Wechseln zwischen Tabellen

Beitrag von Stephan »

die Zeile:

Code: Alles auswählen

document2 = oDoc
muss lauten:

Code: Alles auswählen

document2 = oDoc.CurrentController.Frame

nochmal aber der Hinweis, das Du im Allgemeinen mit nativem Code besser fährst als mit dispatcher-Code. In Deinem konkreten Falle sähe das z.B. so aus:

Code: Alles auswählen

Sub Main2()
	tc = ThisComponent
	akt_view = tc.CurrentController
	
   akt_view.Select(tc.Sheets(2).getCellRangeByName("G15")) 'Tabellenzählung beginnt bei 0
   
   oDoc = StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, Array())
   oDoc.CurrentController.setActiveSheet(oDoc.Sheets(2))  'Tabellenzählung beginnt bei 0
	
End Sub


Gruß
Stephan
Bernhard_mu
Beiträge: 1
Registriert: So, 29.04.2018 20:25

Re: Wechseln zwischen Tabellen

Beitrag von Bernhard_mu »

Funktioniert, vielen Dank!

Wie kann ich jetzt wieder auf die Ursprungstabelle wechseln?

Du hast sicher recht mit dem nativen Code, allerdings fange ich erst damit an und ich muß mir am Anfang noch mit dem Makrorecorder behelfen, um Code zu generieren.

Deine Hilfe ist echt toll!!!
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Wechseln zwischen Tabellen

Beitrag von Stephan »

Wie kann ich jetzt wieder auf die Ursprungstabelle wechseln?
Da beide Dokumente sichtbar sind, genügt es das ursprüngliche Dokument in den Vordergrund zu holen:

Code: Alles auswählen

Sub Main2()
	tc = ThisComponent
	akt_view = tc.CurrentController
	
	akt_view.Select(tc.Sheets(2).getCellRangeByName("G15")) 'Tabellenzählung beginnt bei 0
	
	oDoc = StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, Array())
	oDoc.CurrentController.setActiveSheet(oDoc.Sheets(2))  'Tabellenzählung beginnt bei 0
	
	tc.CurrentController.Frame.ContainerWindow.toFront()
End Sub

Gruß
Stephan
Antworten