von Toxitom » Fr, 11.08.2006 09:00
Hey Tagge,
zum ersten Teil deiner Frage muss ich dir einen Codeteil raussuchen - dauert ein wenig....
Zum zweiten:
Das größere Problem ist die Frage wie ich mit einem Makro zwischen 2 Dokumenten wechseln kann...
Wie meinst du das? Sichtbar? Im Grunde ist jedes Dokument ein eigenes Objekt - und das kannst du beliebig ansprechen. Nehmen wir an, du rufst dein Makro aus einem dritten Dokument auf und lädst dann zwei weiter Dokumente:
Code: Alles auswählen
Dim oDoc1 as object, oDoc2 as object, oDoc3 as object
dim sUrl1 as string, sURL2 as string
dim arg()
sUrl1 = convertToURL("d:\Beispiele\testdatei1.ods")
sUrl2 = convertToURL("d:\Beispiele\testdatei2.ods")
oDoc1 = StarDesktop.loadComponentFromURL(sUrl1, "_blank", 0, Arg())
oDoc2 = StarDesktop.loadComponentFromURL(sUrl2, "_blank", 0, Arg())
Jetzt hast du deine zwei objekte - und die kannst du jeweils direkt ansprechen, Textcursor erzeugen, manipulieren etc. Das ist unabhängig davon, was auf dem Bildschirm gerade zu sehen ist.
Alle Dokumente sind Teil des StarDesktops, dem Wurzelobjekt. Sind die Dinger also schon offen, so kannst du sie auch dort erreichen:
Das folgende Makro liefert dir eine Übersicht aller aktuell offenen Instanzen (OOo Fenster), da musst du eben entsprechende Analysemethoden einsetzen, um deine Dokumente zu identifizieren.
Code: Alles auswählen
sub alleFrames
Dim oFrames as object, oFrame as object, i%, s$
oFrames = StarDesktop.getFrames()
For i = 1 to oFrames.getcount()
oFrame = oFrames.getByINdex(i)
s = s & CStr(i-1) & " : " & oFrame.Title & Chr(10)
next
msgbox s
end sub
Und so kommst du Stück für Stück an deine Dokumente
Gruss
Thomas
Hey Tagge,
zum ersten Teil deiner Frage muss ich dir einen Codeteil raussuchen - dauert ein wenig....
Zum zweiten:
[quote]Das größere Problem ist die Frage wie ich mit einem Makro zwischen 2 Dokumenten wechseln kann... [/quote]
Wie meinst du das? Sichtbar? Im Grunde ist jedes Dokument ein eigenes Objekt - und das kannst du beliebig ansprechen. Nehmen wir an, du rufst dein Makro aus einem dritten Dokument auf und lädst dann zwei weiter Dokumente:
[code]
Dim oDoc1 as object, oDoc2 as object, oDoc3 as object
dim sUrl1 as string, sURL2 as string
dim arg()
sUrl1 = convertToURL("d:\Beispiele\testdatei1.ods")
sUrl2 = convertToURL("d:\Beispiele\testdatei2.ods")
oDoc1 = StarDesktop.loadComponentFromURL(sUrl1, "_blank", 0, Arg())
oDoc2 = StarDesktop.loadComponentFromURL(sUrl2, "_blank", 0, Arg())
[/code]
Jetzt hast du deine zwei objekte - und die kannst du jeweils direkt ansprechen, Textcursor erzeugen, manipulieren etc. Das ist unabhängig davon, was auf dem Bildschirm gerade zu sehen ist.
Alle Dokumente sind Teil des StarDesktops, dem Wurzelobjekt. Sind die Dinger also schon offen, so kannst du sie auch dort erreichen:
Das folgende Makro liefert dir eine Übersicht aller aktuell offenen Instanzen (OOo Fenster), da musst du eben entsprechende Analysemethoden einsetzen, um deine Dokumente zu identifizieren.
[code]
sub alleFrames
Dim oFrames as object, oFrame as object, i%, s$
oFrames = StarDesktop.getFrames()
For i = 1 to oFrames.getcount()
oFrame = oFrames.getByINdex(i)
s = s & CStr(i-1) & " : " & oFrame.Title & Chr(10)
next
msgbox s
end sub[/code]
Und so kommst du Stück für Stück an deine Dokumente :-)
Gruss
Thomas