gelöst: Zugriff auf Calcdatei ohne Calc aufzurufen

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: gelöst: Zugriff auf Calcdatei ohne Calc aufzurufen

Re: Zugriff auf Calcdatei

von ChristianMuc » Do, 15.01.2009 15:59

Ich habe hier im Netz eine Lösung gefunden: Es wird die Tabelle versteckt geöffnet, ohne dass man sie sehen kann.

http://www.starbasicfaq.de/Wiekannmanei ... l#Zweig145

Re: Zugriff auf Calcdatei

von ChristianMuc » Do, 15.01.2009 15:49

Das Problem: Zwar könnte man das schon so realisieren, wie du es schreibst. Aber dann muss ich ja immer er eine Neue Calctabelle öffnen. Genau das will ich ja nicht, da ich die Daten, die einer ODS Datei abgelegt worden sind, in einem Textfeld einer Präsentation gezeigt werden soll. Und da in dieser Tabelle Aufgaben und Lösungen stehen, sollen ja gerade die Schüler diese Tabelle nicht sehen, sondern nur mit Impress die Aufgaben an die Wand mittels eines Beamers geworfen werden. Es müsste doch sowas wie eine Befehl geben, der auf die Daten einer Calctabelle zugreifen kann, ohne sie zu öffen, im Prizip sowas wie dein Befehl file.., nur halt objektorientiert wie alle anderen Sachen aus der API

Re: Zugriff auf Calcdatei

von Blaukraut » Do, 15.01.2009 15:17

Hallo,

eventuell so:
Zuerst in eine Zelle einfügen und dann den Inhalt der Zelle anzeigen?

Code: Alles auswählen

sub Test
    rem ----------------------------------------------------------------------
    rem define variables
    dim document   as object
    dim dispatcher as object
    rem ----------------------------------------------------------------------
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    rem ----------------------------------------------------------------------
    dim args1(0) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "ToPoint"
    args1(0).Value = "$N$38"

    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

    rem ----------------------------------------------------------------------
    dim args2(0) as new com.sun.star.beans.PropertyValue
    args2(0).Name = "StringName"
    args2(0).Value = "='file:///C:/CALC/2009/Auftragsliste.ods'#Tabelle1.F5"

    dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())

	ocell = ThisComponent.sheets(1).getCellRangeByName("N38")
	msgBox(ocell.string)
end sub

(bei mir ist das die 2. Tabelle im Dokument, daher der Parameter sheets(1)

Wahrscheinlich gibt es eine noch viel einfachere Lösung, aber diese funktioniert zumindest.
(ich bin leider noch kein CALC-Held, kämpfe mich aber auch langsam durch)

Gruß

Re: Zugriff auf Calcdatei

von ChristianMuc » Do, 15.01.2009 12:54

Hmmm, ich habe Probleme. Ich will ja die Daten der eine Tabelle nicht in eine andere Tabelle eintragen, sondern sie als String verfügbar haben. Ich weiss nicht, wie ich beim Dispatcher das so modifizieren muss, dass ich zb. den String in einer Msgbox auslesen kann.

Re: Zugriff auf Calcdatei

von ChristianMuc » Do, 15.01.2009 12:50

Achso, na mit dem Dispatcher habe ich nie gearbeitet. Ich dachte ja, man sollte beim Programmieren eher die Finger davon lassen. Ich werde es gleich mal ausprobieren.
Ich hab halt mit den Normalen Diensten bisher programmiert. Ich denke, dass das doch auch möglich sein sollte. Ich probiere aber gleich mal deine Lösung aus, vielleicht reicht das fuer mein Problem

Danke

Christian

Re: Zugriff auf Calcdatei

von Blaukraut » Do, 15.01.2009 12:39

Hallo,

ich habe jetzt einfach mal ein Macro aufgezeichnet und es funktioniert bei mir zumindest:

Code: Alles auswählen

sub Test
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$N$38"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "='file:///C:/CALC/2009/Auftragsliste.ods'#Tabelle1.F5"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())

end sub

Ich habe die Datei "Auftragsliste.ods" nach der Aufzeichnung beendet und das Macro getestet.
Der Inhalt der Zelle F5 aus Tabelle 1 von "Auftragsliste" wird dabei wunderbar in die Zelle N38 der aufrufenden Tabelle übernommen, ohne dass die Datei "Auftragsliste.ods" geöffnet wird.

Gruß

Re: Zugriff auf Calcdatei

von ChristianMuc » Do, 15.01.2009 12:21

Danke für die Antwort. Leider hast du mich falsch verstanden. Ich benötige keine Syntax für die Formel einer Calcanwendungzeile, ich benötige einen Befehl, mit dem ich auf die Daten per Makro zugreifen kann, ohne die Tabelle zu öffnen. Als Makro funktioniert leider der Befehl nicht.

Christian

Re: Zugriff auf Calcdatei

von Blaukraut » Do, 15.01.2009 07:25

Hallo,
bei mir funktioniert das so:

='file:///C:/myFile.ods'#$mySheet.myCell

als Beispiel:
='file:///C:/CALC/2009/auftrag09.ods'#$Grundformular.I16

Gruß

gelöst: Zugriff auf Calcdatei ohne Calc aufzurufen

von ChristianMuc » Do, 15.01.2009 06:34

Hallo liebe Mitglieder, ich möchte folgendes realisieren:

In einer Calctabelle möchte ich 1000 Aufgaben (Rechenaufgaben) abspeichern. Ich möchte, dass ich dann per Zufallsgenerator auf diese Aufgaben zugreifen kann, und dieses dann z.B. mit Impress als eine Art Quiz anzeigen lassen.

Mein Problem: Wie greife ich auf die Datensätze der Calctabelle zu, ohne diese Tabelle zu öffnen? In den einschlägigen Dokumentationen finde ich leider nur Informationen, wie ich mit Datenbanken umgehe. Da ich leider keine Kenntnisse in Datenbankprogrammierung habe, möchte ich das lieber mit einer Calctabelle lösen, vorallem weil ich die Möglichkeit der automatischen Berechnung nutzen will.

Danke für Eure Hilfe im Voraus

Christian

Nach oben