Po pierwsze, sam Basic w Excelu i OOo/AOO/LO jest podobny.
Po drugie, biblioteka dająca dostęp do skoroszytu jest zupełnie inna. Jest na pozór skomplikowana, ale dość logiczna. Zobacz
http://forum.openoffice.org/pl/forum/vi ... 1094#p4450
Po trzecie, trochę literatury.
Przede wszystkim Andrew Pitonyak: AndrewMacro i OpenOffice Macros Explained. Oba na
http://pitonyak.org.
A także fora dyskusyjne.
http://www.oooforum.org/forum dziś jest zaspamowane, ale znajduje się tam wiele cennych, gromadzonych latami przykładów. Oraz fora Apache'a, zwłaszcza
http://forum.openoffice.org/en.
Oprócz tego źródła referencyjne, czyli definicja API: Apache'a
http://www.openoffice.org/api/ oraz LibreOffice
http://api.libreoffice.org.
Po czwarte, do roboty. Zanim zaczniemy, poszukajmy gotowców. Google: openoffice copy sheet to new workbook macro
Obiecujący wynik:
http://www.oooforum.org/forum/viewtopic.phtml?t=10081. Spróbuj zaadaptować; jeśli się nie uda, pomożemy.
Dygresja:
Istnieją 2 różne sposoby operowania na obiektach OOo/LO z poziomu programu. Jeden poprzez UNO API -- wspomniane w referencjach wyżej; to jest biblioteka dostępu z poziomu języków programowania. Drugi przez interpreter (dokładniej: dispatcher) wysokopoziomowego języka, bardziej zbliżonego do tego, czego oczekuje się pod nazwą “Makro”. W cytowanym poście z oooforum, polecenia
Kod: Zaznacz cały
firstDoc = thisComponent
StarDesktop.loadComponentFromUrl("private:factory/scalc","_blank",0,dimArray())
secondDoc.getSheets().insertNewByName("inserted",0)
są wywołaniami obiektów i metod API, natomiast
Kod: Zaznacz cały
dispatchURL(firstDoc,".uno:SelectAll")
dispatchURL(firstDoc,".uno:Copy")
angażują dispatchera UNO. Na ogół te drugie są mniej efektywne, ale łatwiejsze do ogarnięcia dla kogoś, kto myśli interfejsem użytkownika.