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

Cikk azonosítója: 213489 - A cikkben érintett termékek listájának megtekintése.
Az összes kibontása | Az összes összecsukása

A lap tartalma

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

Cikk azonosítója: 213489 - Utolsó ellenőrzés: 2011. szeptember 18. - Verziószám: 3.0
A cikkben található információ a következő(k)re vonatkozik:
  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
Kulcsszavak: 
kbautomation kbvba kbexpertiseinter kbdtacode kbprb kbprogramming KB213489
A Microsoft tudásbázisban szolgáltatott információkat "az adott állapotban", bárminemű szavatosság vagy garancia nélkül biztosítjuk. A Microsoft kizár mindennemű, akár kifejezett, akár vélelmezett szavatosságot vagy garanciát, ideértve a forgalomképességre és az adott célra való alkalmasságra vonatkozó szavatosságot is. A Microsoft Corporation és annak beszállítói semmilyen körülmények között nem felelősek semminemű kárért, így a közvetlen, a közvetett, az üzleti haszon elmaradásából származó vagy speciális károkért, illetve a kár következményeként felmerülő költségek megtérítéséért, még abban az esetben sem, ha a Microsoft Corporationt vagy beszállítóit az ilyen károk bekövetkeztének lehetőségére figyelmeztették. Egyes államok joga nem teszi lehetővé bizonyos károkért a felelősség kizárását vagy korlátozását, ezért a fenti korlátozások az ön esetében esetleg nem alkalmazhatók.

Visszajelzés küldése