Az Office-alkalmazások automatizálása 429-es jelű futásidejű hibát okoz

A cikk Microsoft Office XP, Office 2000 és Office 97 programcsomagra vonatkozó változata a Tudásbázis következő számú cikke: 244264 (Előfordulhat, hogy a hivatkozás részben vagy teljes egészében angol nyelvű tartalomra mutat.).

Összefoglaló

Ha a Microsoft Visual Basic szerkesztőben a New operátorral vagy a CreateObject függvénnyel létrehozza a Microsoft Office-alkalmazások egyikének egy új példányát, a következő hibaüzenet jelenhet meg:
Run-time error '429': ActiveX component can't create object (429. számú futásidejű hiba: Az ActiveX összetevő nem tudja létrehozni az objektumot)
A hiba akkor következik be, ha a COM nem tudja létrehozni a kért Automation objektumot, és az Automation objektum így nem érhető el a Visual Basic számára. Ez a probléma azonban nem érinti valamennyi számítógépet.

Jelen cikk a hiba leggyakoribb forrásait foglalja össze, valamint az egyes forrásokhoz kapcsolódó hibaelhárítási lépéseket tartalmazza.

További információ

A Visual Basic 429. számú hibájának számos különböző forrása lehet; például az alábbi hibatípusok bármelyike okozhatja:
  • Alkalmazáshiba
  • Hibás rendszerkonfiguráció
  • Hiányzó összetevő
  • Hibás összetevő
A hiba pontos forrásának azonosításához első lépésként meg kell állapítania annak típusát. Ha egy ügyfélszámítógép Microsoft Office-alkalmazásaiban jelentkezik a 429-es jelű hiba, a hiba típusának megállapításához és a hibaelhárításhoz kövesse az alábbi utasításokat.

Megjegyzés: Előfordulhat, hogy az alábbi információk némelyike a nem az Office-csomagba tartozó, COM-kiszolgálóként működő alkalmazásokra is érvényes, a jelen cikk tartalma azonban Office-alkalmazások használatát feltételezi.

A programkód átvizsgálása

Mielőtt hozzákezdene a hiba elhárításához, próbálja meg elkülöníteni az annak fellépéséért felelős programsort.

Ha úgy gondolja, hogy valóban egyetlen programsor felelős a hibáért, kövesse az alábbi lépéseket:
  • A programkódban kifejezetten deklarálja az objektumok létrehozását.


    A probléma forrását könnyebben azonosíthatja, ha annak helyét egyetlen műveletre szűkíti. Keressen például az alábbi példákhoz hasonló közvetett objektum-létrehozást.

    1. mintakód
    Application.Documents.Add 'Ne alkalmazza ezt a sort!
    2. mintakód
    Dim oWordApp As New Word.Application 'Ne alkalmazza ezt a sort!
    '... egyéb kód
    oWordApp.Documents.Add
    Ezek a kódok mind közvetett objektum-létrehozást alkalmaznak; a Microsoft Office Word 2003 nem indul el, amíg a változót a programkód meg nem hívja legalább egyszer. Mivel a változót a program számos különböző része meghívhatja, a probléma forrásának azonosítása bonyolult feladatot jelenthet. Emellett a probléma az Application és a Document objektum létrehozásához egyaránt kötődhet – hogy pontosan melyikhez, annak megállapítása szintén akadályokba ütközhet.

    A fenti okokból kifolyólag praktikusabb lehet, ha átírja a programkódot, hogy az közvetlen hívásokkal, külön-külön hozza létre az objektumokat; ilyen kód lehet például az alábbi.
    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... egyéb kód
    Set oDoc = oWordApp.Documents.Add
    Ha közvetlen hívásokkal, külön-külön hozza létre az objektumokat, a probléma forrását könnyebben azonosíthatja, emellett pedig a kód is jelentősen átláthatóbbá válhat.

  • Az Office-alkalmazások új példányának létrehozásakor a New operátor helyett alkalmazza a CreateObject függvényt.

    A CreateObject függvény szorosan követi a legtöbb Microsoft Visual C++-ügyfél által alkalmazott létrehozási eljárást. A CreateObject függvény emellett a kiszolgáló osztályazonosítójának (CLSID) két verzió közötti módosítását is lehetővé teszi. A CreateObject függvény korai kötésű és késői kötésű objektumokhoz egyaránt használható.
  • Ellenőrizze, hogy a CreateObject függvénynek átadott „ProgID” karakterlánc megfelelő-e, illetve győződjön meg arról, hogy a „ProgID” karakterlánc verziófüggetlen. Ha például „Excel.Application.8” értéket lát, írja azt át „Excel.Application” értékre. Ha a verziófüggő „ProgID” karakterláncban megadottól eltérő verziójú Microsoft Office programcsomaggal rendelkezik, az is okozhatja a cikkben tárgyalt hibát.
  • Állapítsa meg az Erl paranccsal, hogy melyik programsor végrehajtásakor lép fel a hiba. Ez segíthet az integrált fejlesztői környezetben nem futtatható alkalmazások hibáinak felderítésében is. Az alábbi kóddal megállapíthatja, melyik Automation objektum (Microsoft Word vagy Microsoft Office Excel 2003) létrehozása során következik be a hiba:
    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")

    ' ... egyéb kód

    err_handler:
    MsgBox "Kódvégrehajtási hiba a következő sornál: " & Erl, vbCritical
    Keresse meg a hibát az MsgBox függvénnyel megjelenített üzenetpanelen szereplő sorszám alapján.
  • Alkalmazzon késői kötést, az alábbiak szerint:
    Dim oWordApp As Object
    A korai kötésű objektumok folyamatelhatárolásokon keresztül rendezett egyéni kapcsolatokat igényelnek. Ha az egyéni kapcsolat rendezése nem végezhető el a CreateObject függvény vagy New operátor meghívása alatt, az 429-es jelű hibát eredményez. A késői kötésű objektumok ezzel szemben az IDispatch rendszerkapcsolatot használják, mely nem igényli egyéni proxy rendezését. Késői kötésű objektumok alkalmazásával ellenőrizheti, hogy ez az eljárás megfelelően működik-e.

    Ha a probléma kizárólag az objektumok korai kötése esetén lép fel, akkor annak forrása a kiszolgálóalkalmazásban keresendő. Ilyen esetben a probléma elhárításához megpróbálkozhat az alkalmazás újratelepítésével, melyről további tudnivalókat a jelen cikk „Az automatizálási kiszolgáló vizsgálata” című szakaszában talál.

Az automatizálási kiszolgáló vizsgálata

A CreateObject függvénnyel és a New operátorral kapcsolatos hibák leggyakrabban a kiszolgálóalkalmazásból származtathatók; többnyire az alkalmazás konfigurációja vagy telepítési módja okozza a problémát. A hiba elhárításához kövesse az alábbi eljárásokat:
  • Ellenőrizze, hogy az automatizálni kívánt Office-alkalmazás telepítve van-e a számítógépre. Győződjön meg arról, hogy az alkalmazás ténylegesen futtatható; ehhez válassza a Start menü Futtatás parancsát, majd írja be vagy válassza ki az elérési utat és fájlnevet. Ha az alkalmazás manuálisan nem futtatható, az automatizálás sem működhet.
  • Regisztrálja újra az alkalmazást az alábbi lépésekkel:
    1. Kattintson a Start menü Futtatás parancsára,
    2. Írja be a megjelenő Futtatás mezőbe a kiszolgáló elérési útját, majd írja a /RegServer kapcsolót a parancssor végére.
    3. Kattintson az OK gombra.

      Az alkalmazás ekkor kezelőfelület nélkül indul el, és a háttérben futva újraregisztrálja saját magát COM-kiszolgálóként.
    Ha a problémát hiányzó beállításkulcsok okozzák, a fenti lépések végrehajtása többnyire elegendő annak elhárításához.
  • Vizsgálja meg az automatizálni kívánt alkalmazás CLSID kulcs alatt található LocalServer32 kulcsát. Győződjön meg arról, hogy a LocalServer32 kulcs megfelelő elérési utat tartalmaz. Lehetőség szerint biztosítsa, hogy az elérési út rövid (DOS 8.3-kompatibilis) formátumú legyen. A kiszolgáló regisztrálásához nem szükséges feltétlenül rövid formátumú elérési út, a hosszú formátumú elérési utak azonban szóközöket tartalmazhatnak, melyek bizonyos rendszerek esetén problémához vezethetnek.

    A kiszolgálóhoz tartozó elérési út ellenőrzéséhez indítsa el a Windows beállításszerkesztőjét:
    1. Kattintson a Start menü Futtatás parancsára,
    2. Írja be a regedit parancsot, majd kattintson az OK gombra.
    3. Nyissa meg a HKEY_CLASSES_ROOT\CLSID kulcsot.

      A regisztrált automatizálási kiszolgálók osztályazonosítói ezen a kulcson belül találhatók.
    4. Keresse meg a kívánt Office-alkalmazást az alábbi táblázatban szereplő osztályazonosítók alapján. Ezután keresse meg a LocalServer32 kulcs értékeként szereplő elérési utat.
      Office-kiszolgálóOsztályazonosító-kulcs
      Access.Application{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
      Excel.Application{00024500-0000-0000-C000-000000000046}
      FrontPage.Application
      {04DF1015-7007-11D1-83BC-006097ABE675}
      Outlook.Application{0006F03A-0000-0000-C000-000000000046}
      PowerPoint.Application{91493441-5A91-11CF-8700-00AA0060263B}
      Word.Application{000209FF-0000-0000-C000-000000000046}
    5. Győződjön meg arról, hogy az elérési út megegyezik a fájl tényleges helyével.
    Megjegyzés: A rövid elérési utak akkor is hibásak lehetnek, ha ránézésre helyesnek tűnnek. Például az Office és a Microsoft Internet Explorer elérési útja egyaránt hasonló a következőhöz (alapértelmezett telepítési helyet feltételezve): C:\PROGRA~1\MICROS~X\ (ahol az
    X egy szám). Előfordulhat, hogy ez a név kezdetben nem rövid elérési útnak tűnik.

    Az elérési út helyességének ellenőrzéséhez:
    1. Kattintson a Start menü Futtatás parancsára,
    2. Másolja a beállításszerkesztőben látható értéket a Futtatás mezőbe.

      Megjegyzés: Az alkalmazás futtatása előtt törölje a parancs végéről az /automation kapcsolót.
    3. Kattintson az OK gombra.
    4. Ellenőrizze, hogy az alkalmazás megfelelően fut-e.

      Ha az alkalmazás az OK gombra való kattintás után elindul, a kiszolgáló megfelelően van regisztrálva. Amennyiben az alkalmazás nem indul el az OK gombra való kattintást követően, cserélje a LocalServer32 kulcs értékét a megfelelő elérési útra. Alkalmazzon rövid elérési utat, ha van rá lehetősége.
  • Ellenőrizze, hogy nem hibás-e a Normal.dot sablonfájl vagy az Excel.xlb erőforrásfájl. A Microsoft Word és Microsoft Excel automatizálása során hiba léphet fel, ha a Word program Normal.dot sablonja vagy az Excel program Excel.xlb erőforrásfájlja hibás. A fájlok teszteléséhez keresse meg a Normal.dot vagy Excel.xlb összes példányát.

    Megjegyzés: Microsoft Windows 2000 vagy Microsoft Windows XP rendszer esetén több példányt is találhat, mivel minden egyes felhasználói profil mappájában található egy-egy másolat ezekből a fájlokból.

    Ideiglenesen nevezze át a Normal.dot vagy az Excel.xlb fájlokat, majd futtassa ismét az automatizálási tesztet. Ha a fájlok nem találhatók, a Word és az Excel automatikusan létrehozza azokat. Ellenőrizze a programkód működését. Ha a kód működik a frissen létrehozott fájlokkal, a korábban átnevezett példányokat törölheti, mivel azok sérültek. Amennyiben azonban a kód továbbra sem működik, a fájlokban tárolt egyéni beállítások megőrzéséhez ajánlott visszaállítani azok eredeti fájlnevét.
  • Ha Windows 2000 rendszert használ, futtassa az alkalmazást a Rendszergazda fiókból. Az Office-kiszolgálók olvasási és írási hozzáférést igényelnek a beállításjegyzékhez és a merevlemezhez, ezért ha ezeket a funkciókat biztonsági beállítások gátolják, az Office-kiszolgálók működésében hiba léphet fel.

A rendszer vizsgálata

A fentiek mellett a rendszerkonfiguráció is gátolhatja a folyamaton kívüli COM-kiszolgálók létrehozását. E hibaforrás ellenőrzéséhez járjon el az alábbiak szerint:
  • Ellenőrizze, hogy a probléma bármely, folyamaton kívüli kiszolgálónál jelentkezik-e. Ha rendelkezik olyan alkalmazással, amely egy adott COM-kiszolgálót használ (például a Word programot), tesztelje azt egy másik, folyamaton kívüli kiszolgálóval annak ellenőrzése végett, hogy a probléma nem magában a COM-rétegben keresendő-e. Ha azt tapasztalja, hogy egyetlen, folyamaton kívüli COM-kiszolgáló sem hozható létre, a probléma megoldásához telepítse újra az OLE rendszerfájlokat a jelen cikk „A Microsoft Office újratelepítése” című szakaszában írottak szerint (vagy telepítse újra a teljes operációs rendszert).
  • Ellenőrizze az automatizálásért felelős OLE rendszerfájlok verziószámát. Ezek a fájlok többnyire készletként települnek a számítógépre, ezért megegyező buildszámmal kell rendelkezniük. Egy helytelenül konfigurált telepítőprogram hibásan külön-külön is telepíthet fájlokat, mely akár a jelen probléma okozója is lehet. E lehetőség kizárásához vizsgálja meg a fájlok buildszámát.

    Az automatizálási fájlok a Windows\System32 vagy a Winnt\System32 mappában találhatók. Az alábbi listában szereplő fájlokat keresse.
    FájlnévVerzióMódosítva
    Asycfilt.dll3.50.50142002.09.04.
    Oleaut32.dll3.50.50162002.09.04.
    Olepro32.dll5.0.50142002.09.04.
    Stdole2.tlb3.0.50142002.09.04.
    A verziószám megjelenítéséhez kattintson jobb gombbal a fájl Windows Intézőbeli ikonjára, majd válassza a Tulajdonságok parancsot. Jegyezze fel a verziószám utolsó négy számjegyét (a buildszámot) és a fájl módosításának dátumát. Ezeknek az értékeknek az összes automatizálási fájl esetében azonosnak kell lenniük.

    Megjegyzés: Windows Server 2003 rendszer és Office 2003 programcsomag esetén a fentinél korábbi verziószámot és dátumot láthat. A listában szereplő számok és dátumok csak példák; az értékek ettől eltérőek is lehetnek.

    Ha a fájlok buildszáma vagy módosítási dátuma nem egyezik, töltsön le egy, az automatizálási fájlok frissítésére szolgáló önkicsomagoló segédprogramot.

    A futásidejű fájlok beszerzéséről a Microsoft Tudásbázis alábbi cikkében tájékozódhat:

    235420 Vbrun60sp4.exe: a Visual Basic 6.0 SP4 futásidejű fájljainak telepítése (Előfordulhat, hogy a hivatkozás részben vagy teljes egészében angol nyelvű tartalomra mutat.)
  • Futtassa a Rendszerkonfigurációs segédprogramot (Msconfig.exe) a külső gyártóktól származó szolgáltatások és a rendszerindításkor betöltődő programok ellenőrzéséhez. Előfordulhat, hogy e programok valamelyike korlátozza az Office-alkalmazás kódfuttatási funkcióit. Az Msconfig.exe segédprogramról a Microsoft Tudásbázis alábbi cikkében tájékozódhat:

    310560 Hibaelhárítás a Windows XP Rendszerkonfigurációs segédprogramja segítségével

    Az Outlook automatizálását például meggátolhatja egy háttérben futó víruskereső program, ha az rendelkezik parancsfájlblokkoló szolgáltatással.

    Megjegyzés: A víruskereső program ideiglenes letiltása csak hálózathoz nem csatlakozó tesztrendszer esetén ajánlott.

    Emellett az Outlook külső gyártóktól származó bővítményeinek letiltásával is próbálkozhat:
    1. Kattintson az Eszközök menü Beállítások parancsára.
    2. Az Egyéb lapon kattintson a Speciális beállítások gombra.
    3. Kattintson a Speciális beállítások párbeszédpanel Bővítménykezelő fülére.
    4. Kattintással törölje az összes, külső gyártótól származó bővítmény jelölőnégyzetét.
    5. Indítsa újra az Outlook programot.
    Ha a fenti eljárás végrehajtásával a probléma megoldódik, lépjen kapcsolatba a külső gyártóval a letiltott program frissítésére vonatkozó információkért.

Az Office újratelepítése

Ha a fenti lépések egyike sem oldotta meg a problémát, próbálkozzon az Office eltávolításával és ismételt telepítésével. A Microsoft azt javasolja, hogy először távolítsa el a telepített példányt, és csak azután telepítse azt újra, az Office eredeti telepítőlemezéről.

A Microsoft Tudásbázis kapcsolódó cikkei:

219423 Az Office 2000 alkalmazáscsomag 1. CD-jéről telepített tartalom eltávolítása (Előfordulhat, hogy a hivatkozás részben vagy teljes egészében angol nyelvű tartalomra mutat.)
158658 A Microsoft Office 97 teljes eltávolítása (Előfordulhat, hogy a hivatkozás részben vagy teljes egészében angol nyelvű tartalomra mutat.)

Hivatkozások

A 429-es jelű hiba elhárításáról a Microsoft Tudásbázis alábbi cikkében is tájékozódhat:

240377 A Jet 3.5 megfelelő telepítése (I. rész) (Előfordulhat, hogy a hivatkozás részben vagy teljes egészében angol nyelvű tartalomra mutat.)
Az Office automatizálásával kapcsolatban további információt és mintakódokat a Microsoft következő webhelyén találhat:
Tulajdonságok

Cikkazonosító: 828550 - Utolsó ellenőrzés: 2008. nov. 11. - Verziószám: 1

Visszajelzés