Při automatizaci aplikací systému Office dojde k chybě za běhu 429

Překlady článku Překlady článku
ID článku: 828550 - Produkty, které se vztahují k tomuto článku.
Verzi tohoto článku pro sady Microsoft Office XP, Office 2000 a Office 97 naleznete pod číslem 244264 (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).).
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Použijete-li operátor New nebo funkci CreateObject v jazyce Microsoft Visual Basic k vytvoření instance aplikace systému Microsoft Office, může se zobrazit následující chybová zpráva:
Run-time error '429': ActiveX component cannot create object (Chyba za běhu 429: Součást ActiveX nemůže vytvořit objekt)
K této chybě dojde, když model COM (Component Object Model) nemůže vytvořit požadovaný objekt Automation a objekt Automation tudíž není k dispozici pro jazyk Visual Basic. K této chybě nedochází ve všech počítačích.

Tento článek popisuje, jak diagnostikovat a řešit běžné problémy, které mohou být příčinou této chyby.

Další informace

V jazyku Visual Basic existuje několik příčin chyby 429. K této chybě dojde, když je splněna některá z následujících podmínek:
  • V aplikaci je chyba.
  • V konfiguraci systému je chyba.
  • Chybí některá součást.
  • Některá součást je poškozená.
Chcete-li najít příčinu chyby, je třeba izolovat problém. Dojde-li k chybě 429 v klientském počítači, použijte následující informace k izolaci chyby a k vyřešení problému v aplikacích systému Microsoft Office.

Poznámka: Některé z uvedených informací mohou platit také pro jiné servery COM, nejen servery Office. Tento článek nicméně předpokládá, že chcete automatizovat aplikace systému Office.

Zkontrolujte kód

Před pokusy o řešení chyby se pokuste se izolovat řádek kódu, který může být příčinou problému.

Zjistíte-li, že příčinou problému může být jediný řádek kódu, proveďte následující postupy:
  • Zkontrolujte, zda kód používá explicitní vytváření objektů.

    Problémy se snáze identifikují, jsou-li zúženy na jedinou akci. Hledejte například implicitní vytvoření objektu jako v následujících ukázkách.

    Ukázka kódu 1
    Application.Documents.Add 'TOTO NEPOUŽÍVEJTE!
    Ukázka kódu 2
    Dim oWordApp As New Word.Application 'TOTO NEPOUŽÍVEJTE!
    '... nějaký další kód
    oWordApp.Documents.Add
    Oba tyto příklady kódu používají implicitní vytváření objektů. Aplikace Microsoft Office Word 2003 bude spuštěna, až bude alespoň jednou volána příslušná proměnná. Jelikož k volání proměnné může docházet v různých částech programu, nalezení zdroje problému může být obtížné. Může být složité ověřit, zda je problém způsoben při tvorbě objektu Application nebo objektu Document.

    Místo toho můžete následujícím způsobem provést explicitní volání, abyste vytvořili každý objekt samostatně.
    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... nějaký další kód
    Set oDoc = oWordApp.Documents.Add
    Provedete-li explicitní volání, a vytvoříte tak každý objekt samostatně, problém bude snazší izolovat. Kód se bude také snáze číst.
  • Při vytváření instance aplikace systému Office použijte funkci CreateObject namísto operátoru New.

    Funkce CreateObject podrobně mapuje proces tvorby používaný většinou klientů jazyka Microsoft Visual C++. Funkce CreateObject také umožňuje změny v identifikátoru třídy CLSID serveru mezi verzemi. Funkci CreateObject můžete používat u objektů s časnou vazbou i s pozdní vazbou.
  • Zkontrolujte správnost řetězce ProgID, který je předán do funkce CreateObject, a zkontrolujte nezávislost řetězce ProgID na verzi. Namísto řetězce "Excel.Application.8" například použijte řetězec "Excel.Application". V systému, kde dojde k chybě, může být starší nebo novější verze systému Microsoft Office, než je verze zadaná v řetězci ProgID.
  • Použijte příkaz Erl, pomocí kterého zobrazíte číslo neúspěšného řádku kódu. Může vám to pomoci při ladění aplikací, které nemohou běžet v rozhraní IDE. Následující kód informuje o tom, který objekt Automation nelze vytvořit (Microsoft Word nebo 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")
     	
     	' ... nějaký další kód
     	
     	err_handler:
     	  MsgBox "Selhání kódu na řádku " & Erl, vbCritical
    K vyhledání chyby použijte funkci MsgBox a číslo řádku.
  • Použijte pozdní vazbu následujícím způsobem:
    Dim oWordApp As Object
    Objekty s časnou vazbou vyžadují, aby byla jejich vlastní rozhraní zařazována přes hranice procesu. Není-li možné zařadit vlastní rozhraní během funkce CreateObject nebo New, dojde k chybě 429. Objekt s pozdní vazbou používá systémem definované rozhraní IDispatch, které nevyžaduje, aby byl zařazen vlastní zástupce. Pomocí objektu s pozdní vazbou ověřte, zda tato procedura funguje správně.

    Pokud k problému dochází pouze v případě objektu s časnou vazbou, problém je v aplikaci serveru. Problém lze většinou odstranit přeinstalací aplikace způsobem popsaným v tomto článku v části Zkontrolujte automatizační server.

Zkontrolujte automatizační server

Nejčastější příčinou vzniku problému při použití funkce CreateObject nebo New je problém s aplikací serveru. Problém je obvykle způsoben konfigurací nebo instalací aplikace. Chcete-li problém vyřešit, použijte následující postupy:
  • Zkontrolujte, zda je aplikace systému Office, kterou chcete automatizovat, nainstalovaná v místním počítači. Zkontrolujte, zda je možné aplikaci spustit. Klepněte na tlačítko Start, dále na příkaz Spustit a potom zkuste spustit aplikaci. Není-li možné aplikaci spustit ručně, nebude fungovat prostřednictvím automatizace.
  • Znovu zaregistrujte aplikaci následujícím způsobem:
    1. Klepněte na tlačítko Start a potom na příkaz Spustit.
    2. V dialogovém okně Spustit zadejte cestu serveru a na konec řádku připojte řetězec /RegServer.
    3. Klepněte na tlačítko OK.

      Aplikace je spuštěna v tichém režimu. Aplikace je přeregistrována jako server COM.
    Dochází-li k problému proto, že chybí klíč registru, tento postup problém obvykle vyřeší.
  • Zkontrolujte klíč LocalServer32 v identifikátoru třídy CLSID aplikace, kterou chcete automatizovat. Zkontrolujte, zda klíč LocalServer32 odkazuje na správné umístění aplikace. Zkontrolujte, zda je název cesty v krátkém formátu (DOS 8.3). Server není třeba registrovat pomocí krátkého názvu cesty. V některých systémech však může dlouhý název cesty s vloženými mezerami způsobovat problémy.

    Chcete-li zkontrolovat klíč cesty uložený pro daný server, spusťte Editor registru systému Windows následujícím postupem:
    1. Klepněte na tlačítko Start a potom na příkaz Spustit.
    2. Zadejte příkaz regedit a klepněte na tlačítko OK.
    3. Přejděte na klíč HKEY_CLASSES_ROOT\CLSID.

      Identifikátory třídy CLSID pro registrované automatizační servery v systému jsou pod tímto klíčem.
    4. Pomocí následujících hodnot klíče CLSID vyhledejte klíč, který představuje aplikaci systému Office, kterou chcete automatizovat. Zkontrolujte klíč LocalServer32 pod klíčem CLSID, kde je uvedena cesta.
      Zmenšit tuto tabulkuRozšířit tuto tabulku
      Server OfficeKlíč CLSID
      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. Ověřte, zda cesta odpovídá skutečnému umístění souboru.
    Poznámka: Krátké názvy cesty se mohou zdát správné, i když ve skutečnosti nejsou. Například aplikace Office i Microsoft Internet Explorer (jsou-li nainstalovány do výchozího umístění) mají krátkou cestu, která se podobá C:\PROGRA~1\MICROS~X\ (kde X je číslo). Tento název se možná nezdá být krátkým názvem cesty.

    Chcete-li zjistit, zda je cesta správná, postupujte takto:
    1. Klepněte na tlačítko Start a potom na příkaz Spustit.
    2. Zkopírujte hodnotu z registru a vložte ji do dialogového okna Spustit.

      Poznámka: Před spuštěním aplikace odeberte přepínač /automation.
    3. Klepněte na tlačítko OK.
    4. Ověřte, zda se aplikace spustí správně.

      Dojde-li po klepnutí na tlačítko OK ke spuštění aplikace, je server zaregistrovaný správně. Nedojde-li po klepnutí na tlačítko OK ke spuštění aplikace, nahraďte hodnotu v klíči LocalServer32 správnou cestou. Je-li to možné, použijte krátký název cesty.
  • Otestujte, zda není poškozená šablona Normal.dot nebo soubor prostředku Excel.xlb. Je-li poškozená šablona Normal.dot v aplikaci Word nebo soubor prostředku Excel.xlb v aplikaci Excel, může docházet k problémům při automatizaci aplikace Microsoft Word nebo Microsoft Excel. Chcete-li provést test těchto souborů, vyhledejte na místních pevný discích všechny instance šablony Normal.dot nebo souboru Excel.xlb.

    Poznámka: U systémů, které používají systém Microsoft Windows 2000 nebo Microsoft Windows XP, můžete najít mnoho kopií těchto souborů. Pro každý profil uživatele nainstalovaný v systému je zde jedna kopie každého z těchto souborů.

    Dočasně přejmenujte soubory Normal.dot a Excel.xlb a znovu spusťte test automatizace. Nemohou-li aplikace Word a Excel tyto soubory najít, vytvoří je. Zkontrolujte, zda kód funguje. Pokud kód funguje, když je vytvořen nový soubor Normal.dot, odstraňte soubory, které jste přejmenovali. Tyto soubory jsou poškozené. Pokud kód nefunguje, je třeba přejmenovat tyto soubory zpět na původní název, aby byla zachována veškerá vlastní nastavení uložená v těchto souborech.
  • Pokud máte v počítači systém Windows 2000, spusťte aplikaci pod účtem Administrator. Servery Office vyžadují přístup pro čtení i zápis do registru a k diskové jednotce. Neumožňuje-li aktuální nastavení zabezpečení přístup pro čtení i zápis, servery Office se mohou nesprávně načíst.

Zkontrolujte systém

Také konfigurace systému může způsobovat problémy při vytvoření serverů COM mimo proces. Chcete-li tyto problémy vyřešit, použijte následující postupy v systému, kde dochází k chybě:
  • Zjistěte, zda k problému dochází na některém mimoprocesovém serveru. U aplikace, která používá určitý server COM (například Word), otestujte jiný mimoprocesový server, abyste zjistili, zda se problém netýká samotné vrstvy COM. Není-li možné v počítači vytvořit mimoprocesový server COM, přeinstalujte systémové soubory OLE podle návodu, který naleznete v tomto článku v části Přeinstalace systému Microsoft Office, nebo přeinstalujte operační systém.
  • Zkontrolujte čísla verzí u systémových souborů OLE, které řídí automatizaci. Tyto soubory se obvykle instalují jako sada. Čísla sestavení těchto souborů se musí shodovat. Nesprávně nakonfigurovaný instalační nástroj může tyto soubory chybně nainstalovat samostatně. Tím dojde k neshodě souborů. Chcete-li zabránit těmto problémům při automatizaci, zkontrolujte, zda se čísla sestavení těchto souborů shodují.

    Soubory automatizace jsou umístěné v adresáři Windows\System32 nebo Winnt\System32. Zkontrolujte následující soubory.
    Zmenšit tuto tabulkuRozšířit tuto tabulku
    Název souboruVerzeDatum změny
    Asycfilt.dll3.50.50144. 9. 2002
    Oleaut32.dll3.50.50164. 9. 2002
    Olepro32.dll5.0.50144. 9. 2002
    Stdole2.tlb3.0.50144. 9. 2002
    Chcete-li zkontrolovat verzi souboru, v programu Průzkumník Windows klepněte pravým tlačítkem myši na soubor a potom klepněte na příkaz Vlastnosti. Poznamenejte si poslední čtyři číslice verze souboru (číslo sestavení) a datum, kdy byl soubor naposledy změněn. Zkontrolujte, zda jsou tyto hodnoty u všech souborů automatizace stejné.

    Poznámka: Výše uvedená čísla verzí a data byla načtena z počítače se systémem Windows Server 2003 a s nainstalovanou sadou Office 2003. Tato čísla a data jsou použita jen jako příklad. Vaše hodnoty mohou být jiné.

    Pokud čísla sestavení nebo data změny těchto souborů nejsou shodná, stáhněte samorozbalující nástroj, který aktualizuje soubory automatizace.

    Další informace o přístupu k souborům run-time získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
    235420 Program Vbrun60sp4.exe nainstaluje soubory run-time jazyka Visual Basic 6.0 SP4 (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
  • V nástroji Konfigurace systému (Msconfig.exe) zkontrolujte karty Služby a Po spuštění, zda se nespouští nějaké aplikace jiných výrobců, které by mohly omezovat spuštění kódu v aplikaci systému Office. Další informace o nástroji Msconfig.exe naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
    310560 Řešení potíží v operačním systému Windows XP pomocí Nástroje pro konfiguraci systému
    Například aplikace Outlook Automation mohou selhat, protože běží antivirový program s funkcí blokování skriptů.

    Poznámka: Antivirový program zakažte pouze dočasně v testovacím systému, který není připojený k síti.

    Případně následujícím postupem v aplikaci Outlook zakažte doplňky jiných výrobců:
    1. V nabídce Nástroje klepněte na příkaz Možnosti.
    2. Na kartě Jiné klepněte na tlačítko Upřesnit nastavení.
    3. V dialogovém okně Upřesnit nastavení klepněte na tlačítko Správce doplňků.
    4. Zrušte zaškrtnutí u všech doplňků jiných výrobců.
    5. Restartujte aplikaci Outlook.
    Lze-li vyřešit problém touto metodou, kontaktujte prodejce antivirového softwaru jiného výrobce a požádejte o informace o aktualizaci antivirového programu.

Přeinstalujte systém Office

Nelze-li vyřešit problém žádným z výše uvedených postupů, odeberte systém Office a potom jej znovu nainstalujte. Společnost Microsoft doporučuje nejprve odebrat stávající verzi a potom znovu nainstalovat systém Office pomocí původního instalačního disku.

Další informace naleznete v následujících článcích znalostní báze Microsoft Knowledge Base:
219423 Jak odebrat instalaci sady Office 2000 CD1 (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
158658 Jak zcela odebrat sadu Microsoft Office 97 (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

Odkazy

Další informace o odstraňování potíží s chybovou zprávou 429 naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
240377 Jak zajistit správnou instalaci stroje Jet 3.5 (Část I.) (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
Další informace o automatizaci systému Office a ukázkové kódy naleznete na následujícím webu společnosti Microsoft:
http://support.microsoft.com/ofd

Vlastnosti

ID článku: 828550 - Poslední aktualizace: 8. května 2007 - Revize: 5.2
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Office SharePoint Designer 2007
  • Microsoft Office FrontPage 2003
  • Microsoft Office Outlook 2007
  • Microsoft Office Outlook 2003
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft Office Word 2007
  • Microsoft Office Word 2003
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Professional Edition
Klíčová slova: 
kbexpertisebeginner kbtshoot kbprogramming kberrmsg kbautomation kbinfo KB828550

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com