Strona 1 z 1

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

: śr maja 26, 2021 10:14 am
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

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

: śr maja 26, 2021 5:12 pm
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.

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

: czw maja 27, 2021 11:29 am
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.