Összefoglalás
Ha a Microsoft Visual Basic Új operátorát vagy CreateObject függvényét használja egy Microsoft Office-alkalmazás példányának létrehozásához, a következő hibaüzenet jelenhet meg:
429-os futásidejű hiba: Az ActiveX-összetevő nem tud objektumot létrehozni
Ez a hiba akkor fordul elő, ha a Komponensobjektum-modell (COM) nem tudja létrehozni a kért Automation-objektumot, ezért az Automation-objektum nem érhető el a Visual Basic számára. Ez a hiba nem minden számítógépen fordul elő.
Ez a cikk a hibát okozó gyakori problémák diagnosztizálását és megoldását ismerteti.
További információ
A Visual Basicben több oka is van a 429-nek. A hiba akkor fordul elő, ha az alábbi feltételek bármelyike teljesül:
-
Hiba történt az alkalmazásban.
-
Hiba történt a rendszerkonfigurációban.
-
Hiányzik egy összetevő.
-
Sérült az alkatrész.
A hiba okának megkereséséhez izolálja a problémát. Ha a "429" hibaüzenetet kapja egy ügyfélszámítógépen, az alábbi információk segítségével izolálhatja és megoldhatja a Microsoft Office-alkalmazásokban előforduló hibát.
Megjegyzés Az alábbi információk némelyike a nem Office COM-kiszolgálókra is vonatkozhat. Ez a cikk azonban feltételezi, hogy automatizálni szeretné az Office-alkalmazásokat.
A kód vizsgálata
A hiba elhárítása előtt próbáljon meg elkülöníteni egy kódsort, amely a problémát okozhatja.
Ha azt tapasztalja, hogy a problémát egyetlen kódsor okozhatja, hajtsa végre az alábbi eljárásokat:
-
Győződjön meg arról, hogy a kód explicit objektumlétrehozáson van.
A problémák könnyebben azonosíthatók, ha egyetlen műveletre vannak szűkítve. Keresse meg például az alábbiak egyikeként használt implicit objektumlétrehozásokat.
1. kódmintaApplication.Documents.Add 'DON'T USE THIS!!
2. kódminta
Dim oWordApp As New Word.Application 'DON'T USE THIS!! '... some other code oWordApp.Documents.Add
Mindkét kódminta implicit objektumlétrehozásokat használ. A Microsoft Office Word 2003 nem indul el, amíg a változót nem hívja meg legalább egyszer. Mivel a változó a program különböző részeiben hívható meg, a probléma nehezen kereshető meg. Nehéz lehet ellenőrizni, hogy a problémát az alkalmazásobjektum létrehozása vagy a Dokumentum objektum létrehozása okozza-e.
Ehelyett explicit hívásokat is kezdeményezhet az egyes objektumok külön-külön történő létrehozásához, az alábbiak szerint.Dim oWordApp As Word.Application Dim oDoc As Word.Document Set oWordApp = CreateObject("Word.Application") '... some other code Set oDoc = oWordApp.Documents.Add
Amikor explicit hívásokat intéz az egyes objektumok külön-külön történő létrehozásához, a probléma könnyebben elkülöníthetők. Így a kód olvashatóbbá is válhat.
-
Egy Office-alkalmazás példányának létrehozásakor az Új operátor helyett használja a CreateObject függvényt.
A CreateObject függvény szorosan leképezi a Legtöbb Microsoft Visual C++ ügyfél által használt létrehozási folyamatot. A CreateObject függvény lehetővé teszi a kiszolgáló CLSID-jének módosítását a verziók között. A CreateObject függvényt korai kötött objektumokkal és késői kötött objektumokkal is használhatja. -
Ellenőrizze, hogy aCreateObjectnek
átadott "ProgID" sztring helyes-e, majd ellenőrizze, hogy a "ProgID" sztring verziófüggetlen-e. Használja például az "Excel.Application" sztringet az "Excel.Application.8" sztring helyett. Előfordulhat, hogy a rendszer a Microsoft Office régebbi vagy újabb verziójával rendelkezik, mint a "ProgID" sztringben megadott verzió. -
Az Erl paranccsal jelentse a nem sikeres kódsor sorszámát. Ez segíthet az IDE-ben nem futtatható alkalmazások hibakeresésében. Az alábbi kódból megtudhatja, hogy melyik Automation-objektum nem hozható létre (Microsoft Word vagy Microsoft Office Excel 2003):
Dim oWord As Word.Application Dim oExcel As Excel.Application On Error Goto err_handler 1: Set oWord = CreateObject("Word.Application") 2: Set oExcel = CreateObject("Excel.Application") ' ... some other code err_handler: MsgBox "The code failed at line " & Erl, vbCritical
A hiba nyomon követéséhez használja az MsgBox függvényt és a sorszámot.
-
Használjon késői kötést az alábbiak szerint:
Dim oWordApp As Object
A korai kötésű objektumok esetében az egyéni illesztőket a folyamathatárok között kell marsallni. Ha az egyéni felületet nem lehet marsallni a CreateObject vagy az Új során, a "429" hibaüzenet jelenik meg. A késői kötésű objektumok az IDispatch rendszer által definiált felületét használják, amelyhez nem szükséges egyéni proxyt marsallni. Az eljárás megfelelő működésének ellenőrzéséhez használjon késői kötésű objektumot.
Ha a probléma csak akkor fordul elő, ha az objektum korai kötésű, a probléma a kiszolgálóalkalmazásban van. A probléma megoldásához általában újratelepítheti az alkalmazást a cikk "Az Automation-kiszolgáló vizsgálata" című szakaszában leírtak szerint.
Az automation-kiszolgáló vizsgálata
A CreateObject vagy az Új használatakor előforduló hibák leggyakoribb oka a kiszolgálóalkalmazást érintő probléma. Általában az alkalmazás konfigurációja vagy az alkalmazás beállítása okozza a problémát. A hibaelhárításhoz használja az alábbi módszereket:
-
Ellenőrizze, hogy az automatizálni kívánt Office-alkalmazás telepítve van-e a helyi számítógépen. Győződjön meg arról, hogy futtathatja az alkalmazást. Ehhez kattintson a Start gombra, majd aFuttatás parancsra
, majd próbálja meg futtatni az alkalmazást. Ha nem tudja manuálisan futtatni az alkalmazást, az alkalmazás nem fog működni az automatizálással. -
Regisztrálja újra az alkalmazást az alábbiak szerint:
-
Válassza a Start menü Futtatás parancsát.
-
A Futtatás párbeszédpanelen írja be a kiszolgáló elérési útját, majd fűzze hozzá a /RegServer elemet a sor végéhez.
-
Kattintson az OK gombra.
Az alkalmazás csendesen fut. Az alkalmazás újra regisztrálva van COM-kiszolgálóként.
Ha a probléma azért fordul elő, mert hiányzik egy beállításkulcs, ezek a lépések általában kijavítják a problémát.
-
-
Vizsgálja meg az automatizálni kívánt alkalmazás CLSID alatt található LocalServer32 kulcsot. Győződjön meg arról, hogy a LocalServer32 kulcs az alkalmazás megfelelő helyére mutat. Győződjön meg arról, hogy az elérési út neve rövid (DOS 8.3) formátumú. Nem kell rövid elérési útnévvel regisztrálnia a kiszolgálót. A beágyazott szóközöket tartalmazó hosszú elérési utak azonban problémákat okozhatnak egyes rendszerekben.
A kiszolgálóhoz tárolt elérésiút-kulcs vizsgálatához indítsa el a Windows beállításszerkesztőt az alábbiak szerint:-
Válassza a Start menü Futtatás parancsát.
-
Írja be a regedit parancsot, majd kattintson az OK gombra.
-
Ugrás a HKEY_CLASSES_ROOT\CLSID kulcsra.
A rendszerben regisztrált automation-kiszolgálók CLSID-jei ezen a kulcson alapulnak. -
A CLSID-kulcs alábbi értékeit használva keresse meg az automatizálni kívánt Office-alkalmazást képviselő kulcsot. Vizsgálja meg az elérési út CLSID-kulcsának LocalServer32 kulcsát.
Office-kiszolgáló
CLSID-kulcs
Access.Application
{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
Excel.Application
{00024500-0000-0000-C000-00000000046}
Outlook.Application
{0006F03A-0000-0000-C000-00000000046}
PowerPoint.Application
{91493441-5A91-11CF-8700-00AA0060263B}
Word.Application
{000209FF-0000-0000-C000-00000000046}
-
Ellenőrizze az elérési utat, és győződjön meg arról, hogy az megegyezik a fájl tényleges helyével.
Megjegyzés: A rövid elérési utak neve helyesnek tűnhet, ha nem helyesek. Az Office és a Microsoft Internet Explorer (ha az alapértelmezett helyeken vannak telepítve) rövid elérési útja például a következőhöz hasonló: C:\PROGRA~1\MICROS~X\ (ahol
X egy szám). Előfordulhat, hogy ez a név kezdetben nem rövid elérési útként jelenik meg.
Annak megállapításához, hogy az elérési út helyes-e, kövesse az alábbi lépéseket:-
Válassza a Start menü Futtatás parancsát.
-
Másolja ki az értéket a beállításjegyzékből, majd illessze be az értéket a Futtatás párbeszédpanelre.
Megjegyzés Az alkalmazás futtatása előtt távolítsa el az /automation kapcsolót. -
Kattintson az OK gombra.
-
Ellenőrizze, hogy az alkalmazás megfelelően fut-e.
Ha az alkalmazás az OK gombra kattintás után fut, a kiszolgáló megfelelően van regisztrálva. Ha az alkalmazás nem fut az OK gombra kattintás után, cserélje le a LocalServer32 kulcs értékét a megfelelő elérési útra. Ha lehet, használjon rövid elérési utat.
-
-
Tesztelje a Normal.dot sablon vagy az Excel.xlb erőforrásfájl lehetséges sérülését. A Microsoft Word vagy a Microsoft Excel automatizálása során problémák léphetnek fel, ha a Word Normal.dot sablonja vagy az Excel Excel.xlb erőforrásfájlja sérült. A fájlok teszteléséhez keressen rá a helyi merevlemezeken a Normal.dot vagy az Excel.xlb összes példányára.
Megjegyzés Ezek a fájlok több példányban is megtalálhatók. A rendszeren telepített minden egyes felhasználói profilhoz egy példány tartozik ezekből a fájlokból.
Ideiglenesen nevezze át a Normal.dot fájlokat vagy az Excel.xlb fájlokat, majd futtassa újra az automatizálási tesztet. A Word és az Excel is létrehozza ezeket a fájlokat, ha nem találják őket. Ellenőrizze, hogy a kód működik-e. Ha a kód egy új Normal.dot fájl létrehozásakor működik, törölje az átnevezett fájlokat. Ezek a fájlok sérültek. Ha a kód nem működik, vissza kell állítania ezeket a fájlokat az eredeti fájlnevükre a fájlokba mentett egyéni beállítások mentéséhez. -
Futtassa az alkalmazást a Rendszergazda fiók alatt. Az Office-kiszolgálóknak olvasási/írási hozzáférésre van szükségük a beállításjegyzékhez és a lemezmeghajtóhoz. Előfordulhat, hogy az Office-kiszolgálók nem töltődnek be megfelelően, ha a jelenlegi biztonsági beállítások megtagadják az olvasási/írási hozzáférést.
A rendszer vizsgálata
A rendszerkonfiguráció a folyamaton kívüli COM-kiszolgálók létrehozásakor is problémákat okozhat. A hibaelhárításhoz használja a következő módszereket azon a rendszeren, amelyen a hiba előfordul:
-
Állapítsa meg, hogy a probléma a folyamaton kívüli kiszolgálóval kapcsolatos-e. Ha egy adott COM-kiszolgálót (például Word) használó alkalmazással rendelkezik, teszteljen egy másik folyamaton kívüli kiszolgálót, és győződjön meg arról, hogy a probléma nem a COM-rétegben jelentkezik. Ha nem tud folyamaton kívüli COM-kiszolgálót létrehozni a számítógépen, telepítse újra az OLE-rendszerfájlokat a jelen cikk "A Microsoft Office újratelepítése" című szakaszában leírtak szerint, vagy telepítse újra az operációs rendszert a probléma megoldásához.
-
Vizsgálja meg az automatizálást kezelő OLE-rendszerfájlok verziószámát. Ezek a fájlok általában készletként vannak telepítve. Ezeknek a fájloknak meg kell egyezniük a buildszámokkal. A helytelenül konfigurált telepítő segédprogram tévesen külön telepítheti a fájlokat. Emiatt a fájlok nem egyeznek. Az automatizálással kapcsolatos problémák elkerülése érdekében vizsgálja meg a fájlokat, és győződjön meg arról, hogy a fájlok buildjei megegyeznek.
Az automatizálási fájlok a Windows\System32 könyvtárban találhatók. Vizsgálja meg az alábbi fájlokat.Fájlnév
Verzió
Módosítás dátuma
Asycfilt.dll
10.0.16299.15
2017. szeptember 29., kedd
Ole32.dll
10.0.16299.371
2018. március 29.
Oleaut32.dll
10.0.16299.431
2018. május 3.
Olepro32.dll
10.0.16299.15
2017. szeptember 29., kedd
Stdole2.tlb
3.0.5014
2017. szeptember 29., kedd
A fájlverzió vizsgálatához kattintson a jobb gombbal a fájlra a Windows Intézőben, majd kattintson a Tulajdonságok parancsra. Jegyezze fel a fájlverzió utolsó négy számjegyét (a buildszámot) és a fájl utolsó módosításának dátumát. Győződjön meg arról, hogy ezek az értékek megegyeznek az összes automation-fájl esetében.
Megjegyzés Az alábbi fájlok Windows 10 1709-es, 16299.431-es buildhez tartoznak. Ezek a számok és dátumok csak példák. Az értékek eltérhetnek. -
A Rendszerkonfiguráció segédprogrammal (Msconfig.exe) megvizsgálhatja a szolgáltatásokat és a rendszerindítást olyan külső alkalmazások esetében, amelyek korlátozhatják a futtatási kódot az Office-alkalmazásban
Megjegyzés A víruskereső program letiltása csak ideiglenesen a hálózathoz nem csatlakozó tesztrendszeren.
Másik lehetőségként az Alábbi lépéseket követve tiltsa le a külső bővítményeket az Outlookban:
Ha ez a módszer megoldja a problémát, a víruskereső program frissítésével kapcsolatos további információkért forduljon a külső gyártóhoz.-
A Fájl menüben kattintson a Beállítások, majd a Bővítmények elemre.
-
Kattintson a COM-bővítmények kezelése, majd az Ugrás gombra.
Megjegyzés Megnyílik a COM-bővítmények párbeszédpanel. -
Törölje a külső bővítmények jelölőnégyzetének jelölését, majd kattintson az OK gombra.
-
Indítsa újra az Outlook programot.
-
Az Office újratelepítése
Ha az előző eljárások egyike sem oldja meg a problémát, távolítsa el, majd telepítse újra az Office-t.
További információt a következő Office-cikkben talál:
Office 365 vagy Office 2016 letöltése és telepítése vagy újratelepítése PC-n vagy Mac gépen
Hivatkozások
Az Office automatizálásával és kódmintáival kapcsolatos további információkért látogasson el a Microsoft következő webhelyére: