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

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

Postprzez Maciejo » Śr maja 26, 2021 10:14 am

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
Maciejo
 
Posty: 7
Dołączył(a): Pn maja 17, 2021 2:23 pm

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

Postprzez Jermor » Śr maja 26, 2021 5:12 pm

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.10, LO 7.0.6 (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.
Avatar użytkownika
Jermor
 
Posty: 1517
Dołączył(a): So paź 12, 2013 11:09 am

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

Postprzez Maciejo » Cz maja 27, 2021 11:29 am

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
Maciejo
 
Posty: 7
Dołączył(a): Pn maja 17, 2021 2:23 pm


Powrót do Makra i programowanie

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość