Rezumat
Atunci când utilizați operatorul nou sau funcția funcția în Microsoft Visual Basic pentru a crea o instanță a unei aplicații Microsoft Office, este posibil să primiți următorul mesaj de eroare:
Eroarea Run-Time ' 429 ': componenta ActiveX nu poate crea un obiect
Această eroare apare atunci când modelul de obiecte componente (COM) nu poate crea obiectul de automatizare solicitat, iar obiectul de automatizare este, prin urmare, indisponibil pentru Visual Basic. Această eroare nu se produce pe toate computerele. Acest articol descrie cum să diagnosticați și să rezolvați problemele comune care pot provoca această eroare.
Mai multe informații
În Visual Basic, există câteva cauze ale erorii 429. Eroarea apare dacă oricare dintre condițiile următoare este adevărată:
-
Există o greșeală în aplicație.
-
Există o greșeală în configurația sistemului.
-
Există o componentă lipsă.
-
Există o componentă deteriorată.
Pentru a găsi cauza erorii, izolați problema. Dacă primiți mesajul de eroare "429" pe un computer client, utilizați următoarele informații pentru a izola și a rezolva eroarea în aplicațiile Microsoft Office. Notă Unele dintre următoarele informații pot, de asemenea, să se aplice pentru serverele COM non-Office. Cu toate acestea, acest articol presupune că doriți să automatizați aplicațiile Office.
Examinarea codului
Înainte de a depana eroarea, încercați să izolați o singură linie de cod care poate cauza problema. Dacă descoperiți că o singură linie de cod poate cauza problema, finalizați aceste proceduri:
-
Asigurați-vă că codul utilizează crearea explicită a obiectelor. Problemele sunt mai ușor de identificat dacă sunt restrânse la o singură acțiune. De exemplu, căutați crearea de obiecte implicite care este utilizată ca una dintre următoarele. Exemplu de cod 1
Application.Documents.Add 'DON'T USE THIS!!
Eșantion de cod 2
Dim oWordApp As New Word.Application 'DON'T USE THIS!! '... some other code oWordApp.Documents.Add
Ambele eșantioane de cod utilizează crearea de obiecte implicite. Microsoft Office Word 2003 nu pornește până când variabila nu se numește cel puțin o dată. Deoarece variabila poate fi apelată în diferite părți ale programului, este posibil ca problema să fie greu de găsit. Poate fi dificil să verificați dacă problema este cauzată atunci când se creează obiectul aplicației sau când se creează obiectul document . În schimb, puteți efectua apeluri explicite pentru a crea separat fiecare obiect, după cum urmează.
Dim oWordApp As Word.Application Dim oDoc As Word.Document Set oWordApp = CreateObject("Word.Application") '... some other code Set oDoc = oWordApp.Documents.Add
Atunci când efectuați apeluri explicite pentru a crea separat fiecare obiect, problema este mai ușor de izolat. De asemenea, este posibil ca codul să fie mai ușor de citit.
-
Utilizați funcția funcția în locul operatorului nou atunci când creați o instanță a unei aplicații Office. Funcția funcția mapează îndeaproape procesul de creare pe care îl utilizează majoritatea clienților Microsoft Visual C++. Funcția funcțiapermite, de asemenea, modificări în CLSID-ul serverului între versiuni. Puteți utiliza funcția funcțiacu obiecte legate cu începutul și cu obiecte cu sfârșit de timp.
-
Verificați dacă șirul "ProgID" care este transmis Funcția este corectă, apoi verificați dacă șirul "ProgID" este versiunea independentă. De exemplu, utilizați șirul "Excel. Application" în loc să utilizați șirul "Excel. Application. 8". Sistemul care nu reușește poate avea o versiune mai veche de Microsoft Office sau o versiune mai nouă de Microsoft Office decât versiunea pe care ați specificat-o în șirul "ProgID".
-
Utilizați comanda pentru a raporta numărul de linie al liniei de cod care nu reușește. Acest lucru vă poate ajuta să depanați aplicațiile care nu se pot executa în IDE. Următorul cod vă spune ce obiect de automatizare nu poate fi creat (Microsoft Word sau 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
Utilizați funcția MsgBox și numărul liniei pentru a urmări eroarea.
-
Utilizați legarea cu întârziere după cum urmează:
Dim oWordApp As Object
Obiectele cu legare timpurie necesită ca interfețele lor particularizate să fie supradefinite în limitele de proces. Dacă interfața particularizată nu poate fi marshaled în timpul funcția sau în timpul nou, primiți mesajul de eroare "429". Un obiect legat la sfârșit utilizează interfața definită de sistem IDispatch care nu necesită ca un proxy particularizat să fie mareșal. Utilizați un obiect legat la sfârșit pentru a verifica dacă această procedură funcționează corect. Dacă problema apare doar atunci când obiectul este legat inițial, problema se află în aplicația server. De obicei, puteți reinstala aplicația așa cum este descris în secțiunea "examinați serverul de automatizare" din acest articol pentru a remedia problema.
Examinarea serverului de automatizare
Motivul cel mai comun pentru o eroare să apară atunci când utilizați funcția sau New este o problemă care afectează aplicația server. De obicei, Configurarea aplicației sau Configurarea aplicației determină problema. Pentru a depana, utilizați următoarele metode:
-
Verificați dacă aplicația Office pe care doriți să o automatizați este instalată pe computerul local. Asigurați-vă că puteți executa aplicația. Pentru a face acest lucru, faceți clic pe Start, pe Executare, apoi încercați să ruleze aplicația. Dacă nu puteți executa manual aplicația, aplicația nu va funcționa prin automatizare.
-
Reînregistrați aplicația după cum urmează:
-
Faceți clic pe Start, apoi pe Executare.
-
În caseta de dialog rulare , tastați calea serverului, apoi adăugați /regserver la sfârșitul liniei.
-
Faceți clic pe OK. Aplicația rulează în liniște. Aplicația este re-înregistrată ca server COM.
Dacă problema apare deoarece lipsește o cheie de registry, acești pași corectează de obicei problema.
-
-
Examinați cheia LocalServer32 de sub CLSID pentru aplicația pe care doriți să o automatizați. Asigurați-vă că tasta LocalServer32 indică locația corectă pentru aplicație. Asigurați-vă că numele căii este într-un format de cale scurtă (DOS 8,3). Nu trebuie să înregistrați un server utilizând un nume de cale scurt. Cu toate acestea, numele de cale lungă care includ spații încorporate pot provoca probleme pentru unele sisteme. Pentru a examina cheia de cale care este stocată pentru server, porniți Windows Registry Editor, după cum urmează:
-
Faceți clic pe Start, apoi pe Executare.
-
Tastați regedit, apoi faceți clic pe OK.
-
Vă deplasați la cheia HKEY_CLASSES_ROOT \CLSID. CLSID-ul pentru serverele de automatizare înregistrate din sistem se află sub această cheie.
-
Utilizați următoarele valori ale cheii CLSID pentru a găsi cheia care reprezintă aplicația Office pe care doriți să o automatizați. Examinați cheia LocalServer32 a cheii CLSID pentru cale.
Office Server
Cheie 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}
-
Verificați calea pentru a vă asigura că aceasta se potrivește cu locația efectivă a fișierului.
Notă Numele de căi scurte pot părea corecte atunci când nu sunt corecte. De exemplu, atât Office, cât și Microsoft Internet Explorer (dacă sunt instalate în locațiile lor implicite) au o cale scurtă asemănătoare cu C: \ ~ 1 \ MICROs ~X\ (unde X este un număr). Acest nume poate să nu apară inițial ca nume de cale scurt. Pentru a determina dacă calea este corectă, urmați acești pași:
-
Faceți clic pe Start, apoi pe Executare.
-
Copiați valoarea din registry, apoi lipiți valoarea în caseta de dialog rulare . Notă Eliminați comutatorul /Automation înainte de a executa aplicația.
-
Faceți clic pe OK.
-
Verificați dacă aplicația rulează corect. Dacă aplicația rulează după ce faceți clic pe OK, serverul este înregistrat corect. Dacă aplicația nu rulează după ce faceți clic pe OK, înlocuiți valoarea cheii LocalServer32 cu calea corectă. Utilizați un nume de cale scurt, dacă puteți.
-
-
Testați eventuala corupție a șablonului normal. dot sau a fișierului de resurse Excel. xlb. Problemele pot apărea atunci când automatizați Microsoft Word sau Microsoft Excel dacă șablonul Normal. dot din Word sau fișierul de resurse Excel. xlb din Excel este deteriorat. Pentru a testa aceste fișiere, căutați pe hard diskuri locale toate instanțele din normal. dot sau Excel. xlb. Notă Puteți găsi mai multe copii ale acestor fișiere. Există o copie a fiecăruia dintre aceste fișiere pentru fiecare profil de utilizator instalat în sistem. Redenumiți temporar fișierele normal. dot sau fișierele Excel. xlb, apoi executați din nou testul de automatizare. Word și Excel creează aceste fișiere dacă nu le pot găsi. Verificați dacă codul funcționează. Dacă codul funcționează atunci când este creat un nou fișier. dot normal, ștergeți fișierele pe care le-ați redenumit. Aceste fișiere sunt deteriorate. Dacă codul nu funcționează, trebuie să reveniți aceste fișiere la numele de fișiere inițiale, pentru a salva toate setările particularizate care sunt salvate în aceste fișiere.
-
Rulează aplicația sub contul de administrator. Serverele Office necesită acces de citire/scriere la registry și la unitatea de disc. Este posibil ca serverele Office să nu se încarce corect dacă setările de securitate curente refuză accesul de citire/scriere.
Examinarea sistemului
De asemenea, configurarea sistemului poate provoca probleme pentru crearea de servere COM în afara procesului. Pentru a depana, utilizați următoarele metode pentru sistemul pe care apare eroarea:
-
Determinați dacă problema are loc cu orice server absent de la proces. Dacă aveți o aplicație care utilizează un anumit server COM (cum ar fi Word), testați un alt server absent de la proces, pentru a vă asigura că problema nu se produce în stratul COM propriu-zis. Dacă nu puteți crea un server COM absent de la proces pe computer, reinstalați fișierele de sistem OLE așa cum este descris în secțiunea "reinstalarea Microsoft Office" din acest articol sau reinstalați sistemul de operare pentru a rezolva problema.
-
Examinați numerele de versiune pentru fișierele de sistem OLE care gestionează automatizarea. Aceste fișiere sunt instalate, de obicei, ca set. Aceste fișiere trebuie să corespundă numerelor de compilare. Un utilitar de configurare configurat incorect poate instala din greșeală fișierele separat. Acest lucru determină nepotrivirea fișierelor. Pentru a evita problemele în automatizare, examinați fișierele pentru a vă asigura că fișierele se bazează. Fișierele de automatizare se află în directorul Windows\system32.. Examinați următoarele fișiere.
Nume fișier
Versiunea
Data modificării
Asycfilt.dll
10.0.16299.15
29 septembrie 2017
Ole32.dll
10.0.16299.371
29 martie 2018
Oleaut32.dll
10.0.16299.431
3 mai, 2018
Olepro32.dll
10.0.16299.15
29 septembrie 2017
Stdole2.tlb
3.0.5014
29 septembrie 2017
Pentru a examina versiunea fișierului, faceți clic cu butonul din dreapta pe fișier în Windows Explorer, apoi faceți clic pe Proprietăți. Rețineți ultimele patru cifre ale versiunii de fișier (numărul de compilare) și data la care s-a modificat ultima dată fișierul. Asigurați-vă că aceste valori sunt identice pentru toate fișierele de automatizare. Notă Următoarele fișiere sunt pentru Windows 10, versiunea 1709, compilarea 16299,431. Aceste numere și date sunt doar exemple. Valorile dumneavoastră pot fi diferite.
-
Utilizați utilitarul de configurare a sistemului (msconfig. exe) pentru a examina serviciile și pornirea sistemului pentru aplicațiile de la terți care pot restricționa executarea codului în aplicația Office. Pentru mai multe informații despre msconfig. exe, consultați următorul articol din baza de cunoștințe Microsoft:
181966 Setări complexe de depanare pentru utilitarul de configurare a sistemului De exemplu, aplicațiile de automatizare Outlook pot să nu reușească, deoarece dețineți un program antivirus care are caracteristicile "script Blocker". Notă Dezactivați temporar programul antivirus pentru un sistem de testare care nu este conectat la rețea. Ca alternativă, urmați acești pași în Outlook pentru a dezactiva programele de completare de la terți: Dacă această metodă rezolvă problema, contactați vânzătorul antivirus terț pentru mai multe informații despre o actualizare a programului antivirus.
-
În meniul fișier , faceți clic pe Opțiuni, apoi faceți clic pe programe de completare.
-
Faceți clic pe gestionare programe de completare com, apoi faceți clic pe Salt. Notă Se deschide caseta de dialog programe de completare com .
-
Debifați caseta de selectare pentru orice program de completare de la terți, apoi faceți clic pe OK.
-
Reporniți Outlook.
-
Reinstalarea Office
Dacă niciuna dintre procedurile anterioare nu rezolvă problema, eliminați, apoi reinstalați Office.
Pentru mai multe informații, consultați următorul articolOffice:
Descărcarea și instalarea sau reinstalarea Office 365 sau Office 2016 pe un PC sau Mac
Referințe
Pentru mai multe informații despre automatizarea Office și eșantioanele de cod, accesați următorul site Web Microsoft: