Ha mindenáron próbálkozni akarsz, keress a VBA-ban megírható, de a LibreOffice-ban is futó függvények között olyat, amivel meg lehet különböztetni a két alkalmazást egymástól. Lehet ez a függvény visszatérési értékeinek vizsgálatával, vagy a hiányával (hibaüzenet) is detektálni.
MsgBox(Application.Caption) - A LO-ban ez írható-olvasható érték, ha az egyik alkalmazásban használtad a fájlodat, beállíthatod a rá jellemző értékre egy másik makróval. De sajnos nem mentődik el ODF fájlba a beállított értéke.
MsgBox(Application.Name) - Ez MS kompatibilis értéket ad vissza, azaz "becsap" téged, mert MS terméknek mutatja magát az AOO/ LO. De azért érdemes összehasonlítani a visszaadott értéket azzal, amit egy valódi Excel ad vissza.)
MsgBox(Application.Version) - Ez MS kompatibilis értéket ad vissza, azaz "becsap" téged, mert MS terméknek mutatja magát)
MsgBox(Application.Build) - ez nem ad vissza értéket a LO-ban. Ha Excelben ad vissza valami értéket, máris van egy megkülönböztető markered.
Az Excelben elérhető Application tulajdonságok listája:
https://docs.microsoft.com/en-us/office ... ion(object)
Sajnos az utolsó zárójel kimarad valamiért az URL-ből, úgyhogy a megjelenő hibaoldalon kattints a megfelelő felkínált lehetőségre. (Ilyen hülye is csak a MS lehet, hogy zárójelet használ egy URL-ben...)
Vagy pótold kézzel a zárójelet a böngésződ címsorában.
nagy valószínűséggel nincs mind megvalósítva LO-ban, és ami meg van valósítva, azok közül is sok is fals (azaz: "Excel kompatibilis") értéket adhat vissza.
AOO-ban már a MsgBox(Application.Caption) is hibaüzenetet ad: ezzel már meg tudod különböztetni az AOO-t a LO-tól.
Nyilván az nem jó, hogy a program futása megakad egy ilyen hibaüzenetnél, de azt le lehet kezelni a "try..." utasítással (Az egy olyan elágazás, mint az "if...", csak a hibára ágazik el. Neked kell megadnod, hogy mi történjen, ha egy utasítás hibával tér vissza.)