Excel - VBA - References

Excel - VBA - References
2018-04-12T12:33:58+02:00
2018-04-12T22:56:34+02:00
2022-10-15T21:35:42+02:00
FeltoltElek
Sziasztok!

   Van egy Excel alkalmazásom, amit eltérő Office verzióval nyitnak meg (2010, 2016).
Mivel a References-nél be van állítva Microsoft Word XX Object Library (szükség van rá), ezért amikor 2016 alatt nyitják meg, akkor problémát jelez a betöltést követően, mert előzőleg 2010 alatt használták és ott a Microsoft Word 14.0 Object Library beállítására volt szükség, és persze fordítva is igaz.
Ez a References  az alábbi fájlt használja mindkét verzió esetén: MSWORD.0LB.
Az útvonala az Office verziótól függ: C:\program Files (x86)Microsoft Office\OfficeXX\

Miként tudnám azt lekezelni, hogy a megnyitáskor az Office verziónak megfelelő Microsoft Word XX.0 Object Library-t használja az Office verziójának megfelelően?
Azt tudom, hogy milyen Office verzió van telepítve és, hogy az 32 vagy 64 bites
Mutasd a teljes hozzászólást!
Vedd ki a word osztálykönyvtárat a referenciák közül. Az abban definiált, általad használt konstansokat, felsorolásokat vagy újra kell definiálnod a kódodban vagy be kell helyettesítened az értéküket. A különböző objektumokat pedig variant vagy object általános típussal kell deklarálnod és futásidőben kell CreateObject() függvénnyel a megfelelő típust hozzárendelned, pl:

Dim AppWord As Object Set AppWord=CreateObject("Word.Application")
Csak arra vigyázz, hogy nehogy véletlenül olyan funcionalitást használj a kódban, ami egy régebbi változatban nem elérhető.
Mutasd a teljes hozzászólást!

  • Csak kerülő ötletem van: legyen egy vezérlő alkalmazás, amelyik eldönti, hogy melyik "al" Excel fájlt töltse be. És külön "al" fájl van a külön referenciákkal.
    Mutasd a teljes hozzászólást!
  • Szia,

         Köszi jó ötlet, meg is valósítható, de várnék még esetleg más megoldási javaslatot, hátha volna erre valakinek még ötlete.
    Mutasd a teljes hozzászólást!
  • Vedd ki a word osztálykönyvtárat a referenciák közül. Az abban definiált, általad használt konstansokat, felsorolásokat vagy újra kell definiálnod a kódodban vagy be kell helyettesítened az értéküket. A különböző objektumokat pedig variant vagy object általános típussal kell deklarálnod és futásidőben kell CreateObject() függvénnyel a megfelelő típust hozzárendelned, pl:

    Dim AppWord As Object Set AppWord=CreateObject("Word.Application")
    Csak arra vigyázz, hogy nehogy véletlenül olyan funcionalitást használj a kódban, ami egy régebbi változatban nem elérhető.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd