Aus einem Writerdokument in ein Calcdokument schreiben, wie?

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

Moderator: Moderatoren

wega
****
Beiträge: 148
Registriert: So, 03.06.2007 21:37

Aus einem Writerdokument in ein Calcdokument schreiben, wie?

Beitrag von wega »

Hallo zusammen,

ich habe ein Makro gekoppelt an einem Writerdokument laufen.
Dieses Kakro soll jetzt Werte in ein, von diesem Makro geöffnetes Calcdokument schreiben.
Das vom Makro geöffnete Calcdokument ist noch jungfräulich, hat keinen Namen und auch noch keine Inhalte.
Wie muß ich die Celle ansprechen, um einen Textstring da hinein zu schreiben.

Mein Ansatz:

Code: Alles auswählen

	oDocument = thisComponent
	oSheet = oDocument.Sheets(0)
	'Die Zählung fängt dabei bei 0 an A1 ist also 0,0
	mycell = oSheet.getCellByPosition(i,0)
	mycell.string = Inhalt
funktioniert nicht, da das Dokument, also "thisComponet" bestimmt das Writerdokument und nicht das Calcdokument ist.

Wie mache ich also zum Zeitpunkt des Zellenbeschreibenwollens das Calcdokumnet zum aktiven (aktuellen) Dokument?

mit freundlichem Gruß
Werner
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Aus einem Writerdokument in ein Calcdokument schreiben, wie?

Beitrag von turtle47 »

Hi,

zeige mal den Code, mit dem du Das Calc-Doc öffnest.


Gruß
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
wega
****
Beiträge: 148
Registriert: So, 03.06.2007 21:37

Re: Aus einem Writerdokument in ein Calcdokument schreiben, wie?

Beitrag von wega »

Hallo Jürgen,

mit dem nachfolgenden Code

Code: Alles auswählen

'Eine neue Datei anlegen
Sub Datei_anlegen
	Dim mArgs()
	Dim oSheet As Object
	oDocument = StarDesktop.loadComponentFromURL ("private:factory/scalc","_blank", 0, mArgs())
	oSelect = oDocument.getCurrentSelection()
	oSheet = oDocument.Sheets(0)
	ShowDirs
'Über den Parameter "private:factory/...." wird die Art des Dokumentes festgelegt.
'private:factory/swriter = Textdokument
'private:factory/scalc = Tabelle
'private:factory/sdraw = Zeichnung
'private:factory/simpress = Präsentation
'private:factory/smath = Formel
end sub
lege ich parallel zum Writerdokument das Calcdokument an.
Das öffnet sich auch und ich kann es auch von Hand anwählen.
Nur das Hineinschreiben aus dem Makro klappt nicht.

mit freundlichem Gruß
Werner
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Aus einem Writerdokument in ein Calcdokument schreiben, wie?

Beitrag von turtle47 »

Hi,
wega hat geschrieben:funktioniert nicht, da das Dokument, also "thisComponet" bestimmt das Writerdokument und nicht das Calcdokument ist.
Genau so ist es.
wega hat geschrieben: Wie mache ich also zum Zeitpunkt des Zellenbeschreibenwollens das Calcdokumnet zum aktiven (aktuellen) Dokument?

Code: Alles auswählen

'....
	oCalcDoc = StarDesktop.loadComponentFromURL ("private:factory/scalc","_blank", 0, mArgs())
	oSheet = oCalcDoc.Sheets(0)
	'Die Zählung fängt dabei bei 0 an A1 ist also 0,0
	mycell = oSheet.getCellByPosition(i,0)
	mycell.string = Inhalt
'........
Viel Erfolg.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
wega
****
Beiträge: 148
Registriert: So, 03.06.2007 21:37

Re: Aus einem Writerdokument in ein Calcdokument schreiben, wie?

Beitrag von wega »

Hallo Jürgen,

danke für Deine Bestätigung.
Das dumme ist nur, daß ich bei meiner Strategie beide Dokumente nebeneinander im Zugriff habe.
Das Makro hängt am Writerdokument, öffnet ein Blanko-Calcdokument und soll nun Werte, die mit dem
writeranhängendem Makro ermittelte Inhalte ins Calcdokument schieben.
Wenn ich aber immer wieder den Load-Befehl absetze, dann öffne ich für jeden Übertrag ein neues Calcdokument.

Eine Lösung wäre:

a) zuerst ein Calc-dokument erstellen
b) dieses mit einem Namen wegzuspeichern
c) dieses, jetzt benannte Calcdokument bei jedem Datenübertrag zu öffnen,
d) den aktuellen nächsten freien Zellenplatz zu bestimmen,
c) den Inhalt dort abzulegen,
e) das Calcdokument wieder schließen,
f) wieder bei c) einspringen und den beschriebenen Vorgang so lange wiederholen, bis alle Werte weggeschrieben sind.

-> keine elegante und schöne Vorgehensweise!!

Mal gucken, wie ich aus dieser Nummer rauskomme.

Wenn einer eine anregung hat, ich bin für alles offen.

mit freundlichem G'ruß
Werner
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Aus einem Writerdokument in ein Calcdokument schreiben, wie?

Beitrag von turtle47 »

Hallo Werner,
wega hat geschrieben:Das dumme ist nur, daß ich bei meiner Strategie beide Dokumente nebeneinander im Zugriff habe.
Das ist doch kein Problem.

Schau Dir folgenden Code mal an der lauffähig ist:

Code: Alles auswählen

Sub Main

Dim mArgs()
Dim oDoc, oCalcDoc, oSheet, mycell As Object
	oDoc = ThisComponent 'Das ist das Writerdokument
	'Hole die Texte aus dem Writerdokument und schreibe sie in ein Array
	
	oCalcDoc = StarDesktop.loadComponentFromURL ("private:factory/scalc","_blank", 0, mArgs())
	oSheet = oCalcDoc.Sheets(0)
	
	
   'Mach  hier noch was Du willst
   '...........   
   
   'und dann das Sheet aus dem Array füllen
   
   'hier mal ein Beispielarray 
   Inhalt = Array("Text 1", "Text 2" , "Text 3")
   for i = 0 to uBound(Inhalt)
   mycell = oSheet.getCellByPosition(0,i +1)
   mycell.string = Inhalt(i)
   next i
End Sub
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
wega
****
Beiträge: 148
Registriert: So, 03.06.2007 21:37

Re: Aus einem Writerdokument in ein Calcdokument schreiben, wie?

Beitrag von wega »

Hallo Jürgen,

danke für diese Anregung.

mit Gruß
Werner
Antworten