Обобщена информация
Когато използвате оператора New или функцията CreateObject в Microsoft Visual Basic за създаване на екземпляр на приложение на Microsoft Office, можете да получите следното съобщение за грешка:
Грешки по време на изпълнение '429': ActiveX компонент не може да създаде обект
Тази грешка възниква, когато Component Object Model (COM) не може да създаде Исканият обект на автоматизация и автоматизация на обекта е недостъпен за Visual Basic. Тази грешка възниква на всички компютри. Тази статия се описва как да откриете и отстраните често срещани проблеми, които могат да предизвикат тази грешка.
Повече информация
Във Visual Basic има няколко причини за грешка 429. Тази грешка възниква, ако е налице едно от следните условия:
-
Има грешка в приложението.
-
Има грешка в конфигурацията на системата.
-
Има липсващи компонент.
-
Има повреден компонент.
За да откриете причината за грешката, изолирате проблема. Ако получавате съобщение за грешка "429" на клиентски компютър, използвайте следната информация за уточняване и отстраняване на грешки в приложенията на Microsoft Office. Забележка Следната информация може да се прилага към Office COM сървъри. Обаче тази статия се предполага, че искате да автоматизирате приложения на Office.
Проверете код
Преди да отстраните грешката, опитайте да уточните един ред от кода, който може да бъде причина за проблема. Ако откриете, че един ред код може да е причина за проблема, изпълнете следните процедури:
-
Уверете се, че кодът използва създаване изрично обект. Проблемите са по-лесно да се установи дали те се свива с едно действие. Например търсете за създаване на неявно обекта, който се използва като един от следните. Примерен код 1
Application.Documents.Add 'DON'T USE THIS!!
Примерен код 2
Dim oWordApp As New Word.Application 'DON'T USE THIS!! '... some other code oWordApp.Documents.Add
И двата от следните примерни използване на създаване на неявно обект. Microsoft Office Word 2003 не се стартира, докато променлива се нарича поне веднъж. Тъй като променливата може да се нарича в различните части на програмата, проблемът може да е трудно да намерите. Може да е трудно да проверите дали проблемът е причинен при създаване на обект на приложение или при създаване на обект в документ . Вместо това можете да направите изрично разговори за създаване на всеки обект поотделно, както следва.
Dim oWordApp As Word.Application Dim oDoc As Word.Document Set oWordApp = CreateObject("Word.Application") '... some other code Set oDoc = oWordApp.Documents.Add
Когато правите изрично повиквания за създаване на всеки обект отделно, проблемът е по-лесно да откриете. Това може да направи кода по-лесен за четене.
-
Използвайте функцията CreateObject вместо нов оператор при създаване на екземпляр на приложение от Office. Функцията CreateObject тясно карта на процеса на създаване, използващи повечето клиенти на Microsoft Visual C++. CreateObjectфункция позволява също така промени в CLSID на сървъра между версии. Можете да използвате CreateObjectфункция с ранно точното обекти и късно свързани обекти.
-
Уверете се, че "ProgID" низ, който се подава на CreateObject е правилен и се уверете, че низът на "ProgID" е независим. Например кавички "Excel.Application" вместо "Excel.Application.8" низ. Система, която не може да има по-стара версия на Microsoft Office или по-нова версия на Microsoft Office от версията, която сте посочили в низа "ProgID".
-
Използвайте командата Erl да съобщите номера на реда от кода, който не успее. Това може да ви помогне да трасирате приложения, които не работят в специализираното логическо устройство. Следният код ви кой автоматизация на обект не може да бъде създаден (Microsoft Word или 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
Използвайте функцията MsgBox и номера за проследяване на грешката.
-
Използвайте късно свързване както следва:
Dim oWordApp As Object
Ранно точното обекти изискват техните потребителски връзки да се marshaled процес граници. Ако потребителски интерфейс не може да бъде marshaled по време на CreateObject или нова, получавате съобщение за грешка "429". Най точното обект използва IDispatch системата интерфейс, който не изисква по избор прокси сървър да бъде marshaled. Използвайте късно точното обект да се уверите, че тя работи правилно. Ако проблемът възниква само когато обектът е началото точното, проблемът е в приложението на сървъра. Обикновено можете да преинсталирате приложението, както е описано в раздела "Проверка на автоматизация сървър" на тази статия, за да отстраните проблема.
Проверка на сървъра за автоматизация
Най-честата причина за грешка се появява, когато използвате CreateObject или нова е проблем, засягащ сървърно приложение. Обикновено конфигурацията на приложението или настройката на приложението причинява проблема. За да отстраните, използвайте следните методи:
-
Уверете се, че приложението на Office, която искате да автоматизирате е инсталиран на локалния компютър. Уверете се, че можете да стартирате приложението. За да направите това, щракнете върху Старт, щракнете върху Изпълнениеи след това се опитайте да стартирате програмата. Ако не можете да стартирате приложението ръчно, приложението няма да работи чрез автоматизация.
-
Пререгистрирайте приложението по следния начин:
-
Щракнете върху Старти след това щракнете върху изпълнение.
-
В диалоговия прозорец изпълнение въведете пътя на сървъра и след това добавете/RegServer в края на реда.
-
Щракнете върху OK. Приложението работи тихо. Приложението е като COM сървър.
Ако проблемът възниква, защото ключ в системния регистър липсва, стъпките обикновено коригира проблема.
-
-
Проверете LocalServer32 ключ под CLSID за приложението, което искате да автоматизирате. Уверете се, че ключът LocalServer32 сочи към правилното местоположение за приложението. Уверете се, че името на пътя е в кратък път (DOS 8.3) формат. Не трябва да регистрирате сървър с помощта на кратък път име. Обаче дълъг път имена, които съдържат вградени пространства могат да причинят проблеми при някои системи. Изучаването на пътя ключ, който се съхранява на сървъра, стартирайте редактора на системния регистър на Windows, както следва:
-
Щракнете върху Старти след това щракнете върху изпълнение.
-
Въведете regeditи щракнете върху OK.
-
Преместване на HKEY_CLASSES_ROOT\CLSID ключ. CLSID за автоматизация на регистрирания сървърите на системата се под този ключ.
-
Използвайте следните стойности на ключа CLSID, за да намерите ключа, който представлява приложение на Office, която искате да автоматизирате. Проверете ключа LocalServer32 на ключа CLSID на пътя.
Office сървър
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}
-
Проверете пътя да се уверите, че тя отговаря на действителното местоположение на файла.
Забележка Кратък път имената може да изглежда правилно, когато те са неправилни. Например Office и Microsoft Internet Explorer (ако са инсталирани в местата си по подразбиране) има кратък път, който е подобен на C:\PROGRA~1\MICROS~X\ (където X е число). Това име може да не първоначално се кратък път име. За да определите дали пътят е правилен, изпълнете следните стъпки:
-
Щракнете върху Старти след това щракнете върху изпълнение.
-
Копирайте стойността от системния регистър и след това поставете стойността в диалоговия прозорец за изпълнение . Забележка Премахнете ключа /automation , преди да стартирате приложението.
-
Щракнете върху OK.
-
Уверете се, че приложението работи правилно. Ако приложението се изпълнява, след като щракнете върху OK, сървърът е регистриран правилно. Ако приложението не работи след като щракнете върху OK, сменете стойността на ключа LocalServer32 с правилния път. Използвайте кратък път име, ако можете.
-
-
Тест за повредено шаблона Normal.dot или Excel.xlb ресурсен файл. Проблеми могат да възникнат при автоматизиране Microsoft Word или Microsoft Excel, ако е повреден или шаблона Normal.dot в Word или Excel.xlb ресурсен файл в Excel. За да проверите тези файлове, потърсете локални твърди дискове за всички екземпляри на Normal.dot или Excel.xlb. Забележка Можете да намерите няколко копия на тези файлове. Има едно копие от всеки един от тези файлове за всеки потребителски профил, който е инсталиран в системата. Временно преименувайте Normal.dot или Excel.xlb файлове и след това изпълнете отново автоматизация тест. Word и Excel и двете създават тези файлове, ако те не могат да ги намерите. Проверете дали кодът работи. Ако кодът работи, когато се създава нов файл с Normal.dot, изтриване на файлове, които сте преименували. Тези файлове са повредени. Ако кодът не работи, трябва да се сменят тези файлове първоначалните си имена файл да запишете всички потребителски настройки, които са записани в тези файлове.
-
Стартирайте приложението в акаунт на администратор. Офис сървъри изисква достъп до четене/запис в системния регистър и на диск. Сървъри на Office може да не се зарежда правилно, ако текущите настройки на защитата отказва достъп за четене/запис.
Проверка на системата
Системна конфигурация може да предизвика проблеми за създаване на процес на изчакване на COM сървъри. За да отстраните, използвайте следните методи в системата, в която възниква грешка:
-
Определете дали проблемът възниква в процес на изчакване на сървъра. Ако имате приложение, което използва конкретен COM сървър (например Word), изпробвайте различен процес на изчакване на сървъра да се уверите, че проблемът не е възникнала в самия COM слой. Ако не можете да създадете COM сървър на процес на компютъра, Преинсталирайте OLE системни файлове, както е описано в раздела "Преинсталиране на Microsoft Office" на тази статия или преинсталиране на операционната система за разрешаване на проблема.
-
Проверете номера на версията за OLE системни файлове, които управляват автоматизация. Тези файлове обикновено се инсталират като набор. Тези файлове трябва да съответства на номера на компилация. Неправилно конфигуриран инсталационната програма отделно погрешно може да инсталира файловете. Това води до файловете са грешни. За да избегнете проблеми при автоматизация, проверете файловете се уверете, че файловете компилациите отговарят. Автоматизация на файлове се намират в директорията Windows\System32. Проверете следните файлове.
Име на файл
Версия
Дата на промяна
Asycfilt.dll
10.0.16299.15
29 септември 2017
Ole32.dll
10.0.16299.371
29 март 2018
Oleaut32.dll
10.0.16299.431
3 май 2018
Olepro32.dll
10.0.16299.15
29 септември 2017
Stdole2.tlb
3.0.5014
29 септември 2017
За проверка на версията на файла, с десния бутон върху файла в Windows Explorer и след това щракнете върху свойства. Обърнете внимание на последните четири цифри на версията (build номер) и дата на последна промяна. Уверете се, че тези стойности са същите за всички файлове на автоматизация. Забележка Следните файлове са за Windows версия 1709 10, компилация 16299.431. Тези номера и дати са само примерни. Стойности могат да са различни.
-
Използвайте помощната програма за конфигуриране на системата (Msconfig.exe) да проучи стартиране на услуги и система за външни приложения, които могат да ограничат работи код в приложението на Office. За допълнителна информация относно Msconfig.exe вижте следната статия в базата знания на Microsoft:
181966 Разширени настройки за отстраняване на неизправности на помощната програма за конфигуриране на системата Например автоматизация на Outlook може да е неуспешно поради това, че използвате антивирусна програма, която е "скрипт блокиране" функции. Забележка Забрани антивирусната програма само временно на тестова система, която не е свързан към мрежата. Освен това изпълнете следните стъпки в Outlook, за да деактивирате добавки на трети страни: Ако този метод отстрани проблема, се свържете с производители на доставчика за повече информация относно актуализация на антивирусната програма.
-
В менюто файл изберете Опциии след това щракнете върху добавки.
-
Щракнете върху управление на COM добавкии натиснете Go. Забележка Отваря се диалоговият прозорец COM добавки .
-
Изчистете отметката от квадратчето за всяка трета страна добавка и след това щракнете върху OK.
-
Рестартирайте Outlook.
-
Преинсталирайте Office
Ако нито един от предишните процедури да разрешите проблема, премахнете и преинсталирайте Office.
За повече информация вижте следната статияOffice:
Изтегляне и инсталиране или преинсталиране на Office 365 или Office 2016 на компютър или Mac
Препратки
За допълнителна информация относно Office автоматизация и примерен код посетете следния уеб сайт на Microsoft: