Shrnutí
Když použijete operátor New nebo funkci CreateObject v jazyce Microsoft Visual Basic k vytvoření instance aplikace sady Microsoft Office, můžete obdržet následující chybovou zprávu:
Chyba spuštění '429': součást ActiveX nemůže vytvořit objekt
K této chybě dochází, když modelu COM (Component Object) nemůže vytvořit požadovaný objekt Automation a objekt Automation je proto 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 způsobit tuto chybu.
Další informace
V jazyce Visual Basic existuje několik příčin chyby 429. K této chybě dojde, pokud je splněna některá z následujících podmínek:
-
Je chyba v aplikaci.
-
V konfiguraci systému je chyba.
-
Je chybějící součásti.
-
Je poškozené součásti.
Chcete-li zjistit příčinu chyby, izolujte problém. Pokud obdržíte "429" chybová zpráva v klientském počítači, použijte následující informace k zjištění a vyřešení chyby v aplikacích Microsoft Office. Poznámka Některé z uvedených informací může také použít servery COM sady Office. Tento článek předpokládá, že chcete automatizovat aplikace systému Office.
Zkontrolujte kód
Před odstraňování došlo k chybě, pokuste se izolovat řádek kódu, který může být příčinou problému. Pokud zjistíte, že jediný řádek kódu může být příčinou problému, proveďte následující postupy:
-
Ujistěte se, zda kód používá explicitní vytváření objektů. Problémy se snáze identifikují, pokud je zúžen na jednu akci. Hledejte například implicitní vytvoření objektu používaný jako jednu z následujících akcí. Ukázka kódu 1
Application.Documents.Add 'DON'T USE THIS!!
Ukázkový kód 2
Dim oWordApp As New Word.Application 'DON'T USE THIS!! '... some other code oWordApp.Documents.Add
Oba tyto příklady kódu používají implicitní vytváření objektů. Microsoft Office Word 2003 nelze spustit, dokud proměnná se nazývá alespoň jednou. Protože proměnná může být volána v různých částech programu, může být obtížné najít problém. Může být složité ověřit, zda je problém způsoben při vytvoření objektu Application nebo objektu dokumentu je vytvořena. Místo toho můžete provést explicitní volání vytvořit každý objekt samostatně, tj.
Dim oWordApp As Word.Application Dim oDoc As Word.Document Set oWordApp = CreateObject("Word.Application") '... some other code Set oDoc = oWordApp.Documents.Add
Pokud provedete explicitní volání vytvořit každý objekt samostatně, je snazší izolovat problém. To může také zjednodušit kód ke čtení.
-
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++. Metoda CreateObjectfunkce také umožňuje změny v identifikátoru třídy CLSID serveru mezi verzemi. Můžete použít CreateObjectfunkce s časnou vazbou a pozdní vazbou objekty.
-
Ověřte, zda řetězce ProgID, který je předán CreateObject je správný a potom ověřte, zda řetězce ProgID, nezávislé na verzi. Například použijte řetězec "Excel.Application" místo pomocí řetězce "Excel.Application.8". Systém, který může být starší verze sady Microsoft Office nebo novější verzi sady Microsoft Office, než je verze, kterou jste zadali v řetězce ProgID.
-
Použijte příkaz Erl nahlásit číslo řádku na řádek kódu, který není úspěšný. To může pomoci při ladění aplikací, které nemohou běžet v rozhraní IDE. Následující kód poznáte, 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") ' ... some other code err_handler: MsgBox "The code failed at line " & Erl, vbCritical
K vyhledání chyby použijte funkci MsgBox a číslo řádku.
-
Použijte pozdní vazba takto:
Dim oWordApp As Object
Objekty s časnou vazbou vyžadují své vlastní rozhraní zařazována přes hranice procesu. Pokud nelze zařadit vlastní rozhraní během CreateObject nebo Nový, "429" chybová zpráva. Objekt pozdní vazbou používá systémem definované rozhraní IDispatch nevyžaduje vlastní proxy zařazována. Pomocí objektu pozdní vazbou ověřte, že tento postup funguje správně. Pokud k potížím dochází pouze v případě, že je objekt časnou vazbou, problém je v serverové aplikaci. Obvykle můžete přeinstalovat aplikace, jak je popsáno v části "Zkontrolujte automatizační Server" tohoto článku vyřešit.
Zkontrolujte automatizační server
Nejčastější příčinou problému dojít při použití Funkce CreateObject nebo New je problém, který ovlivňuje serverové aplikace. Konfigurace aplikace nebo instalace aplikace obvykle způsobí potíže. K řešení použijte následující metody:
-
Ověřte, že chcete automatizovat aplikace systému Office nainstalované v místním počítači. Ujistěte se, že můžete spustit aplikaci. Chcete-li to provést, klepněte na tlačítko Start, klepněte na tlačítko Spuštěnía potom zkuste spustit aplikaci. Pokud aplikaci nelze spustit ručně, nebude fungovat prostřednictvím automatizace.
-
Znovu zaregistrujte aplikaci následujícím způsobem:
-
Klepněte na tlačítko Starta potom klepněte na příkaz Spustit.
-
V dialogovém okně Spustit zadejte cestu k serveru a potom připojit na konec řádku/regserver .
-
Klikněte na tlačítko OK. Aplikace bude spuštěna bez zásahu uživatele. Aplikace je přeregistrována jako COM server.
Pokud k problému dochází, protože chybí klíč registru, tyto kroky obvykle problém.
-
-
Zkontrolujte klíč LocalServer32 v identifikátoru třídy CLSID pro aplikaci, kterou chcete automatizovat. Ujistěte se, že klíč LocalServer32 odkazuje na správné umístění aplikace. Ujistěte se, zda je název cesty ve formátu krátké cesty (DOS 8.3). Nemáte k registraci serveru pomocí krátký název cesty. Dlouhý název cesty s vloženými mezerami však může způsobit problémy u některých systémů. Chcete-li zkontrolovat klíč cesty, která je uložena na serveru, spusťte Editor registru systému Windows takto:
-
Klepněte na tlačítko Starta potom klepněte na příkaz Spustit.
-
Zadejte příkaz regedita klepněte na tlačítko OK.
-
Přejděte na klíč HKEY_CLASSES_ROOT\CLSID. Identifikátory CLSID pro registrované automatizační servery v systému jsou pod tímto klíčem.
-
Pomocí následujících hodnot klíče CLSID vyhledejte klíč, který představuje aplikaci systému Office, kterou chcete automatizovat. Zkontrolujte klíč LocalServer32 klíč CLSID cesta.
Office server
Klíč CLSID
Access.Application
{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
Excel.Application
{00024500-0000-0000-C000-000000000046}
Outlook.Application
{0006F03A-0000-0000-C000-000000000046}
PowerPoint.Application
{91493441-5A91-11CF-8700-00AA0060263B}
Word.Application
{000209FF-0000-0000-C000-000000000046}
-
Zkontrolujte cestu a ujistěte se, že odpovídá skutečné umístění souboru.
Poznámka Krátké názvy cesty se mohou zdát správné když nejsou správné. Například Office a aplikaci Microsoft Internet Explorer (pokud jsou 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 možná nezdá být krátký název cesty. Chcete-li zjistit, zda je cesta správná, postupujte takto:
-
Klepněte na tlačítko Starta potom klepněte na příkaz Spustit.
-
Zkopírujte hodnotu z registru a vložte hodnotu v dialogovém okně Spustit . Poznámka Před spuštěním aplikace, odeberte přepínač/Automation .
-
Klikněte na tlačítko OK.
-
Ověřte, zda se aplikace spustí správně. Pokud se aplikace spustí po klepnutí na tlačítko OK, server je správně zaregistrována. Pokud aplikace se nespustí po klepnutí na tlačítko OK, nahraďte hodnotu v klíči LocalServer32 správnou cestou. Pokud je to možné, použijte krátký název cesty.
-
-
Test poškození šablony Normal.dot nebo soubor prostředku Excel.xlb. Problémy mohou nastat při automatizaci aplikace Microsoft Word nebo Microsoft Excel v případě poškození buď šablony Normal.dot v aplikaci Word nebo soubor prostředku Excel.xlb v aplikaci Excel. Chcete-li otestovat tyto soubory, Hledat místní pevné disky pro všechny instance šablony Normal.dot nebo Excel.xlb. Poznámka Můžete najít více kopií těchto souborů. Existuje jedna kopie každého z těchto souborů pro každý profil uživatele, který je nainstalován v systému. Dočasně přejmenujte soubory Normal.dot a Excel.xlb a znovu spusťte test automatizace. Word a Excel i vytvoření těchto souborů, pokud nebudou moci najít. Ověřte, zda kód funguje. Jestliže kód funguje, když je vytvořen nový soubor Normal.dot, odstraňte soubory, které jste přejmenovali. Tyto soubory jsou poškozeny. Pokud kód nefunguje, musíte vrátit tyto soubory do jejich původních názvů souborů, chcete-li uložit vlastní nastavení uložené v těchto souborech.
-
Spusťte aplikaci pod účtem správce. Servery Office vyžadují přístup pro čtení i zápis do registru a na disk. Servery Office nemusí správně načíst, pokud aktuální nastavení zabezpečení Odepřít přístup pro čtení i zápis.
Zkontrolujte systém
Konfigurace systému může také způsobit problémy pro vytvoření serverů COM mimo proces. Chcete-li vyřešit, použijte následující metody v systému, ve kterém dochází k chybě:
-
Zjistěte, zda k problému dochází na libovolný server out-of-process. Pokud máte aplikaci, která používá určitý server COM (například Word), vyzkoušejte jiný server out-of-process a ujistěte se, že problém není v samotné vrstvy COM. vyskytující. Pokud server out-of-process COM nelze vytvořit v počítači, znovu nainstalovat soubory OLE systému, jak je popsáno v části "Přeinstalovat Microsoft Office" tohoto článku nebo přeinstalovat operační systém, chcete-li vyřešit tento problém.
-
Zkontrolujte čísla verzí u systémových souborů OLE, které řídí automatizaci. Tyto soubory se obvykle instalují jako sada. Tyto soubory se musí shodovat čísla sestavení. Nesprávně nakonfigurovaný instalační nástroj může omylem soubory nainstalovat samostatně. Tím dojde k neshodě souborů. Aby nedocházelo k problémům v automatizaci, zkontrolujte soubory a ujistěte se, že sestavení těchto souborů se shodují. Soubory automatizace jsou umístěny v adresáři Windows\System32. Zkontrolujte následující soubory.
Název souboru
Verze
Datum změny
Asycfilt.dll
10.0.16299.15
29. září 2017
Ole32.dll
10.0.16299.371
29. března 2018
Oleaut32.dll
10.0.16299.431
3. května 2018
Olepro32.dll
10.0.16299.15
29. září 2017
Stdole2.tlb
3.0.5014
29. září 2017
Chcete-li zkontrolovat verzi souboru, klepněte pravým tlačítkem myši na soubor v programu Průzkumník Windows a potom klepněte na příkaz Vlastnosti. Poznamenejte si poslední čtyři číslice verze souboru (číslo sestavení) a datum poslední změny souboru. Ujistěte se, zda jsou tyto hodnoty u všech souborů automatizace stejné. Poznámka Následující soubory jsou pro Windows, 10. 1709 verze, sestavení 16299.431. Tato čísla a kalendářní data jsou pouze příklady. Vaše hodnoty mohou být různé.
-
Pomocí nástroje pro konfiguraci systému (Msconfig.exe) k prozkoumání služby a po spuštění pro aplikace jiných výrobců, které by mohly omezovat spuštění kódu v aplikaci systému Office. Další informace o Msconfig.exe naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
181966 Nástroj pro konfiguraci systému Upřesnit nastavení Poradce při potížích Například aplikace Outlook Automation mohou selhat, pokud používáte antivirový program, který má funkce "blokování skriptů". Poznámka Zakažte antivirový program pouze dočasně v testovacím systému, který není připojen k síti. Další možností postupujte takto v aplikaci Outlook zakažte doplňky jiných výrobců: Pokud tato metoda řeší problém, obraťte se na dodavatele výrobců antivirového softwaru Další informace o aktualizaci antivirového programu.
-
V nabídce soubor klepněte na příkaz Možnostia potom klepněte na tlačítko Add-ins.
-
Klepněte na příkaz Spravovat doplňkya klepněte na tlačítko Přejít. Poznámka Otevře se dialogové okno Doplňky modelu COM .
-
Zrušte zaškrtnutí políček u všech doplňků jiných výrobců a pak klepněte na tlačítko OK.
-
Restartujte aplikaci Outlook.
-
Znovu nainstalujte sadu Office
Pokud žádný z předchozích kroků problém vyřešit, odeberte a přeinstalujte sadu Office.
Další informace naleznete v následujícím článkuOffice:
Stáhnout a nainstalovat nebo přeinstalovat Office 365 nebo Office 2016 na počítače PC nebo Mac
Odkazy
Další informace o automatizaci systému Office a ukázky kódu přejděte na následující web společnosti Microsoft: