Zelle aus externer Datei auslesen

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

Moderator: Moderatoren

123abc

Zelle aus externer Datei auslesen

Beitrag von 123abc » Do, 09.11.2017 22:38

Ich habe eine wahrscheinlich kleine Frage zu Calc-Makros.

Ich bin gerade dabei, eine Zelle aus einem komplett anderen Calc-Dokument auszulesen. Wie man Zellen aus dem gerade aktiven Dokument ausliest, weiß ich.

myDoc = thisComponent
mySheet = myDoc.sheets(0)
mycell = mysheet.getCellByPosition(0,0)
(http://www.dannenhoefer.de/faqstarbasic ... l#Zweig167)

Wie schaffe ich es jetzt, dass ich über die Url auf ein anderes Dokument zugreifen kann?

F:\ordner1\anderedatei.ods

Die Dateien liegen im gleichen Verzeichnis. Es wäre toll, wenn man die Url ohne C:\ oder F:\ erstellen kann, so dass das Verzeichnis verschoben werden kann.

Ich hoffe mir kann jemand bei meinem Problem helfen.

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

Re: Zelle aus externer Datei auslesen

Beitrag von Stephan » Do, 09.11.2017 23:12

Wie schaffe ich es jetzt, dass ich über die Url auf ein anderes Dokument zugreifen kann?
Indem Du das pasende Dokument innerhalb aller geöffneten Dokumente anhand eines Merkmals identifizierst, z.B. am Titel des Dokuments:

Code: Alles auswählen

alles = StarDesktop.getComponents
elemente = alles.CreateEnumeration
Do While elemente.hasMoreElements
	aktuell = elemente.NextElement
	If aktuell.hasLOcation Then
		If aktuell.title = "anderedatei.ods" Then
			mySheet = aktuell.sheets(0)
 			mycell = mysheet.getCellByPosition(0,0)
		End If
	End If
Loop
Gruß
Stephan

Benutzeravatar
komma4
********
Beiträge: 5330
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Zelle aus externer Datei auslesen

Beitrag von komma4 » Fr, 10.11.2017 07:23

und wenn das Dokument nicht geöffnet ist, dann öffnest Du es.

Hier eine Funktion, die das Dokumenten-Objekt zurück gibt (also aufrufen mit newDoc = loadDoc(s), s => vollständiger Name, inkl. Pfad)

Code: Alles auswählen

Function loadDoc(s as string, Optional props) as Object
' get:	string, containing path and document name to open, 
'               optional: properties array
' put:	object of opened document

If isMissing(props) Then
   props = Array()
End If

loadDoc = _
StarDesktop.loadComponentFromUrl(_
ConvertToURL(s), "_blank", 0, props ) 

End Function
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)

123abc

Beitrag von 123abc » So, 12.11.2017 18:57

Vielen Dank für die schnelle Hilfe. Beides funktioniert bei mir gut.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste