Nazwa funkcji ze stringu
Nazwa funkcji ze stringu
Czy można uruchomić funkcję której nazwa zostanie podana jako string? Np "POŁĄCZ.TEKSTY"(...)
OpenOffice 4.1.2 Windows 7
Re: Nazwa funkcji ze stringu
W samym interfejsie formuł nie ma takiego mechanizmu. Ale w bibliotece obietktowej, do której jest dostęp z poziomu makropoleceń, znajduje się serwis FunctionAccess wyposażony w metodę CallFunction, która to właśnie robi.
W najprostszym przypadku wystarczy napisać krótką funkcję w Basicu, która potraktuje swój pierwszy parametr jako nazwę funkcji, a pozostałe jako jej argumenty.
Takie podejście jest mało wydajne — nawet w porównaniu z formułami — i mało bezpieczne — w sensie umożliwienia wykonania obliczeń zależnych od danych. Warto przed jego wdrożeniem zastanowić się, czy jest ono optymalnym sposobem rozwiązania problemu.
Trzeba też sobie zdawać sprawę, że dana funkcja używana w formułach może być przywołana przez nazwy zależne od ustawień językowych. W wewnętrznej reprezentacji formuł nie jest to problem, ale w przypadku danej tekstowej już tak. FunctionAccess umożliwia skorzystanei zarówno z „kanonicznej” (zwykle anglojęzycznej) nazwy, jak i z nazwy w używanym języku. Jednak nie dzieje się to automatycznie.
Dokumentacja LibreOffice — https://api.libreoffice.org/docs/idl/re ... ccess.html
LO Developers Guide — https://wiki.documentfoundation.org/Doc ... _Documents — podrozdział Function Handling
Serwis użytkowników Ask LibreOffice — https://ask.libreoffice.org/t/passing-a ... n/102766/1 (z przykładami)
W najprostszym przypadku wystarczy napisać krótką funkcję w Basicu, która potraktuje swój pierwszy parametr jako nazwę funkcji, a pozostałe jako jej argumenty.
Takie podejście jest mało wydajne — nawet w porównaniu z formułami — i mało bezpieczne — w sensie umożliwienia wykonania obliczeń zależnych od danych. Warto przed jego wdrożeniem zastanowić się, czy jest ono optymalnym sposobem rozwiązania problemu.
Trzeba też sobie zdawać sprawę, że dana funkcja używana w formułach może być przywołana przez nazwy zależne od ustawień językowych. W wewnętrznej reprezentacji formuł nie jest to problem, ale w przypadku danej tekstowej już tak. FunctionAccess umożliwia skorzystanei zarówno z „kanonicznej” (zwykle anglojęzycznej) nazwy, jak i z nazwy w używanym języku. Jednak nie dzieje się to automatycznie.
Dokumentacja LibreOffice — https://api.libreoffice.org/docs/idl/re ... ccess.html
LO Developers Guide — https://wiki.documentfoundation.org/Doc ... _Documents — podrozdział Function Handling
Serwis użytkowników Ask LibreOffice — https://ask.libreoffice.org/t/passing-a ... n/102766/1 (z przykładami)
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Nazwa funkcji ze stringu
Zadałem to pytanie ponieważ mam problem z funkcją POŁĄCZ.TEKSTY. Plik z xlsc z którego korzystam wgrywam na dysk Google następnie zbieram dane korzystając z telefonu, po czym finalnie zgrywam ten plik z powrotem z dysku Google na komputer i robię resztę.
Dysk Google zamienia mi funkcję z POŁĄCZ.TEKSTY na TEXTJOIN. Tylko, że mam Excela 2019 który nie rozpoznaje TEXTJOIN i muszę ręcznie zmieniać nazwę na POŁĄCZ.TEKSTY. Czy można coś zaradzić?
Dysk Google zamienia mi funkcję z POŁĄCZ.TEKSTY na TEXTJOIN. Tylko, że mam Excela 2019 który nie rozpoznaje TEXTJOIN i muszę ręcznie zmieniać nazwę na POŁĄCZ.TEKSTY. Czy można coś zaradzić?
OpenOffice 4.1.2 Windows 7
Re: Nazwa funkcji ze stringu
W LibreOffice jest możliwość korzystania w interfejsie polskojęzycznym (albo innym narodowym) z oryginalnych, czyli anglojęzycznych nazw funkcji.
Narzędzia → Opcje → LibreOffice Calkc → Formuła → [x] Użyj angielskich nazw funkcji.
Przy tym ustawieniu w formułach widoczne są nazwy oryginalne.
Excel takiej opcji nie ma. Zaś Google widocznie ignoruje fakt, że włączone są narodowe ustawienia nazw funkcji. Albo ustawienia wczytanego arkusza wskazują język angielski.
Inna propozycja.
Nie wiem co się stanie w Excelu, gdyby go doposażyć w zadeklarowaną w Basicu funkcję TextJoin, która wywoływałaby biblioteczną (czyli inną) funkcję TextJoin z tymi samymi argumetami. Być może wtedy nazwa textjoin w polskojęzycznej formule odwoływała się do tej zareklarowanej. Ale to trzeba sprawdzić.
Narzędzia → Opcje → LibreOffice Calkc → Formuła → [x] Użyj angielskich nazw funkcji.
Przy tym ustawieniu w formułach widoczne są nazwy oryginalne.
Excel takiej opcji nie ma. Zaś Google widocznie ignoruje fakt, że włączone są narodowe ustawienia nazw funkcji. Albo ustawienia wczytanego arkusza wskazują język angielski.
Inna propozycja.
Nie wiem co się stanie w Excelu, gdyby go doposażyć w zadeklarowaną w Basicu funkcję TextJoin, która wywoływałaby biblioteczną (czyli inną) funkcję TextJoin z tymi samymi argumetami. Być może wtedy nazwa textjoin w polskojęzycznej formule odwoływała się do tej zareklarowanej. Ale to trzeba sprawdzić.
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)