A CreateObject parancs használatakor nem töltődnek be a bővítmények az Excel alkalmazásban

A jelenség

Ha a Microsoft Excel alkalmazást OLE automatizálási objektumként éri el a CreateObject paranccsal, az XLStart mappában található bővítmények és fájlok, valamint az alapértelmezett új munkafüzet nem töltődik be.

Oka

A bővítmények és fájlok betöltésekor az Excel üzenetben jelzi a hívó alkalmazásnak (például Visual Basic), hogy nem áll készen a kérelem megválaszolására, ezért újból kell próbálkoznia. Előfordulhat, hogy a hívó alkalmazás nem képes kezelni a kérelmet, és nem tudja végrehajtani a többi parancsot.

Kerülő megoldás

A Microsoft csak szemléltetési célból ad közre programozási példákat, és azokra – beleértve a forgalomba hozhatóságot és az adott célra való megfelelőséget is – sem törvényi, sem más garanciát nem vállal. A cikk feltételezi, hogy az olvasó jártas a bemutatott programozási nyelvben, valamint az eljárások létrehozására és a velük kapcsolatos hibakeresésre szolgáló eszközök használatában. A Microsoft támogatási szakemberei segíthetnek az egyes eljárások működésének megértésében. E szakemberek ugyanakkor funkcióbővítési célból nem módosítják a példákat, és nem készítenek az egyéni igényeknek megfelelő eljárásokat.

Ha az Excel alkalmazás OLE automatizálási objektumként való futtatásakor szeretne egy bővítményfájlt betölteni, végezze el kézzel a betöltést. E metódusra példák az alábbiak.

A Microsoft Office Excel 2007 esetén

Sub LoadAddin()

' xl definiálása objektum típusú változóként.
Dim xl As Object

' Aktiválja és az xl változóhoz rendeli a Microsoft Excel alkalmazást.
Set XL = CreateObject("Excel.Application")

' Megnyitja a kívánt bővítményfájlt, a jelen példában az XLQUERY.XLAM fájlt.
XL.Workbooks.Open (XL.librarypath & "\MSQUERY\XLQUERY.XLAM")

' Ha regisztrálnia kell a függvényeket és parancsokat,
' amelyek egy erőforrásban (XLL) találhatók, használja a RegisterXLL metódust.
' Az alábbi példában az Analys32.xll minden függvénye
' regisztrálva van.
' XL.RegisterXLL "Analys32.xll"

' A bővítményfájlban található bármely automatikus makrót futtatja
' Az automatikus makrók nem futnak, ha egy fájlt az
' Open metódus használatával nyit meg.
XL.Workbooks("xlquery.xlam").RunAutoMacros 1

Set XL = Nothing
End Sub

A Microsoft Office Excel 2003 és az Excel korábbi verziói esetén

Sub LoadAddin()

' xl definiálása objektum típusú változóként.
Dim xl As Object

' Aktiválja és az xl változóhoz rendeli a Microsoft Excel alkalmazást.
Set XL = CreateObject("Excel.Application")

' Megnyitja a kívánt bővítményfájlt, a jelen példában az XLQUERY.XLA fájlt.
XL.Workbooks.Open (XL.librarypath & "\MSQUERY\XLQUERY.XLA")

' Ha regisztrálnia kell a függvényeket és parancsokat,
' amelyek egy erőforrásban (XLL) találhatók, használja a RegisterXLL metódust.
' Az alábbi példában az Analys32.xll minden függvénye
' regisztrálva van.
' XL.RegisterXLL "Analys32.xll"

' A bővítményfájlban található bármely automatikus makrót futtatja
' Az automatikus makrók nem futnak, ha egy fájlt az
' Open metódus használatával nyit meg.
XL.Workbooks("xlquery.xla").RunAutoMacros 1

Set XL = Nothing
End Sub

További információ

Mivel az Excel nem tölti be az XLStart mappában lévő bővítményeket és fájlokat abban az esetben, ha OLE automatizálási objektumként hívja meg, teljes mértékben felügyelheti a betöltési folyamatot. Ha be szeretne tölteni egy bővítményt, kézzel betöltheti azt.

Ez azt is jelenti, hogy a CreateObject paranccsal való meghívás esetén nem makróhiba vagy zárolt, illetve írásvédett fájlra vonatkozó értesítés akadályozza meg az Excel alkalmazást a betöltéstől. E működés másik előnye, hogy így kevesebb időt vesz igénybe az Excel betöltése, mint a bővítmények vagy fájlok betöltésekor.

Hivatkozások

A Visual Basic for Applications összetevővel kapcsolatos forrásokról a Microsoft Tudásbázis alábbi cikkében tájékozódhat:

226118 A Visual Basic for Applications programozási nyelv tanulását megkönnyítő források listája (Előfordulhat, hogy a hivatkozás részben vagy teljes egészében angol nyelvű tartalomra mutat.)
Tulajdonságok

Cikkazonosító: 213489 - Utolsó ellenőrzés: 2011. szept. 18. - Verziószám: 1

Visszajelzés