Cześć,
mam takie pytanie bo pewnie wielu z Was spotkało się z tym tematem. Mam sobie plik w Excelu zawierający UserForm'y no i oczywiście kod vba który obsługuje poszczególne zdarzenia. Plik działa pod Excelem bez zarzutu, no ale wywala się na niektórych komendach w OpenOffice Calc.
Pytanie jest następujące czy jest możliwość napisania uniwersalnego kodu który działał by i tu i tu.
Zdaję sobie sprawę, że polecenia się różnią i trzeba je w razie czego napisać dwa razy, ale chodzi mi o to czy jest możliwość napisania procedury która sprawdziłaby w jakim programie otwarto plik a potem to już pójdzie gładko - jak Excel to idzie taki kod a jak OpenOffice to idzie taki kod. Nie chce tworzyć dwóch odrębnych plików jeden dla OpenOffice' a drugi dla Excela.
pozdrawiam i dzięki za pomoc
Uniwersalny kod makra dla OO i Excel
Uniwersalny kod makra dla OO i Excel
OpenOffice.ux.pl 3.4
Re: Uniwersalny kod makra dla OO i Excel
Teoretycznie się da. Ale
* idealnie byłoby korzystać z funkcji, której wynik zwraca wartość specyficzną dla danego środowiska pakietu. O ile wiem, nie ma takiej funkcji o wspólnej dla Excela i OpenOffice składni. W samym Open | Libre jest np. funkcja GetSolarVersion().
* w takim razie trzeba by liczyć na wyjątek spowodowany próbą wykonania kodu dla innego środowiska i obsłużyć go tak, by odpalał kod dla drugiego środowiska. W nieprzyzwoitym uproszczeniu, w pseudokodzie
* wobec koszmarnej konwencji obsługi wyjątków w Basicu (skoki) nie wróżę powodzenia
* jeszcze żeby wystarczyło napisać jedo rozwidlenie, dla funkcji inicjującej programistyczną warstwę dokumentu. Ale nie, kod będzie rozproszony: tu podpięte jedno makro, tam inne. Fakt podpięcia zarejestrowany przez GUI, czyli kodu aktywującego nie pisaliśmy sami i nie mamy na niego wpływu. Tym bardziej nie widzę szans powodzenia.
Ale mogę nie mieć racji.
* idealnie byłoby korzystać z funkcji, której wynik zwraca wartość specyficzną dla danego środowiska pakietu. O ile wiem, nie ma takiej funkcji o wspólnej dla Excela i OpenOffice składni. W samym Open | Libre jest np. funkcja GetSolarVersion().
* w takim razie trzeba by liczyć na wyjątek spowodowany próbą wykonania kodu dla innego środowiska i obsłużyć go tak, by odpalał kod dla drugiego środowiska. W nieprzyzwoitym uproszczeniu, w pseudokodzie
Kod: Zaznacz cały
on error goto chybaExcel
c = thisComponent.currentController
: chybaOpenOffice
on error goto
obsługa OpenOffice
goto koniec
: chybaExcel
obsługa Excela
: koniec
* jeszcze żeby wystarczyło napisać jedo rozwidlenie, dla funkcji inicjującej programistyczną warstwę dokumentu. Ale nie, kod będzie rozproszony: tu podpięte jedno makro, tam inne. Fakt podpięcia zarejestrowany przez GUI, czyli kodu aktywującego nie pisaliśmy sami i nie mamy na niego wpływu. Tym bardziej nie widzę szans powodzenia.
Ale mogę nie mieć racji.
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Uniwersalny kod makra dla OO i Excel
Niestety doszedłem do podobnego wniosku, ale liczyłem, że może ktoś bardziej doświadczony w OO już coś takiego przerabiał.
Dzięki za pomoc
pozdrawiam
Dzięki za pomoc
pozdrawiam
OpenOffice.ux.pl 3.4