nachdem ich die Forensuche glücklos bemüht habe, versuche ich es nochmal mit einem eigenen Thema.
Einer meiner Mitarbeiter möchte in Calc nicht zusammenhängende Zellen markieren und kopieren. Ich möchte ihm nun ein Makro schreiben, mit dem er das bewerkstelligen kann, da OpenOffice das ja von Haus aus nicht bietet.
Bisher habe ich folgendes zu Stande gebracht:
Code: Alles auswählen
dim i as integer
dim zeile as integer
dim spalte as integer
dim zeilencounter as integer
dim spaltencounter as integer
dim slection as object
dim bereich as object
zeilencounter = 0
spaltencounter = 0
selection = thiscomponent.getcurrentselection()
for i = 0 to selection.getcount() - 1
bereich = selection.getbyindex(i).getrangeaddress()
for zeile = bereich.startrow to bereich.endrow
for spalte = bereich.startcolumn to bereich.endcolumn
thiscomponent.sheets(1).getcellbyposition(spaltencounter,zeilencounter).string = thiscomponent.sheets(0).getcellbyposition(spalte,zeile).string
spaltencounter = spaltencounter + 1
next
zeilencounter = zeilencounter + 1
spaltencounter = 0
next
next
msgbox ("fertig")
Nun nöchte ich aber noch erreichen, dass die Strings aus den markierten Bereichen nicht in das zweite Sheet derselben Componente, sondern in eine andere ods-Datei geschrieben werden. Diese zweite ods-Datei ist zur Laufzeit geöffnet. Es sollte also, wenn ich das richtig verstanden habe, eine zweite Componente existieren.
Mit folgendem Code ist mir zumindest gelungen, die zur Zeit geöffneten Dateien auszulesen
Code: Alles auswählen
GlobalScope.BasicLibraries.LoadLibrary("Tools")
oComponents = StarDesktop.getComponents()
oDocs = oComponents.createEnumeration()
do while oDocs.hasMoreElements()
oDoc = Odocs.nextElement()
datei = odoc.geturl()
msgbox datei
loop
In meinem jugendlich Leichtesinn habe ich mir etwas in dieser Richtung vorgestellt (ja, ich weiss, dass es so etwas nicht gibt

Code: Alles auswählen
StarDesktop.GetComponentByIndex(0).Sheets(0).GetCellByPosition(0,0).string
Danke schonmal für Eure Hilfe.
Ich in für jeden Hinweis bzw. Ansatz dankbar!!
Grüße
Inqui