Jak trwale zapisć makro w pliku ods powstałym z xls?

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
Maciejo
Posty: 17
Rejestracja: pn maja 17, 2021 2:23 pm

Jak trwale zapisć makro w pliku ods powstałym z xls?

Post autor: Maciejo »

Witam

Jak trwale zapisać makro w pliku .ods, który powstał przez zapisanie pliku .xls w formacie "Arkusz kalkulacyjny ODF" w LibreOffice?

Mam plik ods, który zapisałem jako xls.
Mogę w nim zarejestrować makro, które się wykonuje. Jednak po zapisaniu pliku, zamknięciu i ponownym otworzeniu, makra nie ma.

Podobna rzecz się dzieje z plikami ods, w których są makra.
Zapisuję je jako xls.
Po takim zapisie nie ma już makr, które były wcześniej w pliku ods.
Nie można też nowych zapisać w tym pliku xls, który był stworzony z ods.
Można makro zarejestrować, wykonać, ale nie zapisuje się trwale po zamknięciu pliku.

Pozdrawiam
LibreOffice 6.4.6.2 (x64) Windows 10
Awatar użytkownika
Jermor
Posty: 2238
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Jak trwale zapisć makro w pliku ods powstałym z xls?

Post autor: Jermor »

O czym należy pamiętać, mówiąc o programowaniu arkuszy Excel i Calc.
  • To są dwa całkowicie inne projekty z własnymi językami Basic.
  • To fundacji LibreOffice zależy na możliwym udostępnieniu makr tworzonych w MS Office (Word, Excel, PowerPoint).
  • MS Offie nie jest w ogóle zainteresowany konkurencją.
  • LibreOffice potrafi otworzyć pliki MS Office i udostępnić zawarte w nich makra. LibreOffce w otwartym pliku odtwarza stosowną strukturę bibliotek, inną niż ta, która jest wykorzystywana przez zwykły plik pakietu. Zawartość biblioteki może być edytowana, jednak musi zostać zapisana w swoim macierzystym formacie. Przy tym zapisie nie są zapisywane biblioteki charakteryzujące LibreOffice. Jeśli więc chcemy dopisać makro w języku LibreOffice Basic, musimy je umieścić w module biblioteki VBA.
  • Zapisanie pliku w formacie ODF powoduje usunięcie biblioteki VBA, zatem żadne makro nie może zostać wykonane.
  • Otwarcie pliku ODF, pozwala dopisać do niego makra w języku VBA, jednak należy na początku modułu dodać instrukcję Option VBASupport 1.
  • W takim pliku nie można utworzyć struktury odpowiadającej bibliotekom VBA. Zapisanie pliku w formacie MS Office nie utworzy zatem w nim żadnej biblioteki makr.
AOO 4.1.15, LO 7.5.9 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Maciejo
Posty: 17
Rejestracja: pn maja 17, 2021 2:23 pm

Re: Jak trwale zapisć makro w pliku ods powstałym z xls?

Post autor: Maciejo »

Bardzo dziękuję za wytłumaczenie.
Przeprowadziłem trochę testów i chyba zapisanie pliku .xls jako .ods nie usuwa makr z VBAProject.

Zatem, w LibreOffcie można zarejestrować makro i zapisać je trwale w pliku .ods.
Będzie ono wtedy w obiekcie nazwa-pliku.ods > Standard > Moduły > Module1.
Jeżeli w LibreOffice stworzymy plik .xls, albo .ods zapiszemy jako .xls, to nie da się tam zapisać żadnego makra.
Można natomiast w LibreOffice zapisywać nowe makra w plik .xls, gdy wcześniej zostało zapisane jakieś makro w MS Excel. Wtedy takie makra są w obiekcie
nazwa-pliku.xls > VBAProject > Moduły > Module1.
Poza tym, gdy taki plik .xls zapisany zostanie jako .ods, to nadal makra będą dostępne.
Co więcej, można teraz zapisywać makra zarówno w Standard > Moduły > Module1 jak i w VBAProject > Moduły > Module1.
LibreOffice 6.4.6.2 (x64) Windows 10
ODPOWIEDZ