Conectați-vă cu Microsoft
Conectați-vă sau creați un cont
Salut,
Selectați un alt cont.
Aveți mai multe conturi
Alegeți contul cu care doriți să vă conectați.

Rezumat

Când utilizați operatorul New sau funcția CreateObject în Microsoft Visual Basic pentru a crea o instanță de o aplicație Microsoft Office, este posibil să primiți următorul mesaj de eroare:

Run-time error '429': componentă ActiveX nu se poate crea obiecte

Această eroare apare când Component Object Model (COM) imposibil de creat obiectul solicitat de automatizare , obiect de automatizare este, de aceea, disponibil pentru Visual Basic. Această eroare se produce pe toate computerele. Acest articol descrie modul de a diagnostica și rezolva problemele comune care pot cauza această eroare.

Mai multe informații

În Visual Basic, există mai multe cauze de eroare 429. Eroarea se produce dacă oricare dintre următoarele condiţii este adevărată:

  • Există o greşeală în aplicația.

  • Există o greşeală în configurația sistemului.

  • Există o componentă lipsă.

  • Există o componentă deteriorat.

Pentru a găsi cauza erorii, izolarea problemei. Dacă primiți mesajul de eroare "429" pe un computer client, utilizați următoarele informații pentru a izola și rezolvă eroarea în aplicațiile Microsoft Office. Notă Unele dintre următoarele informații, de asemenea, se pot aplica la serverele Office COM. Cu toate acestea, acest articol presupune că doriți să automatizeze aplicațiile Office.

Examinați codul

Înainte să depanați eroare, încercați să găsiți o singură linie de cod care poate fi cauza problemei. Dacă descoperi că o singură linie de cod poate fi cauza problemei, parcurgeți aceste proceduri:

  • Asigurați-vă că codul utilizează Creare obiect explicit. Probleme sunt mai ușor de identificat dacă ele sunt redus până la o singură acțiune. De exemplu, căutați Creare obiect implicit care este utilizat ca unul dintre următoarele. Mostră de cod 1

    Application.Documents.Add 'DON'T USE THIS!!

    Mostră de cod 2

    Dim oWordApp As New Word.Application 'DON'T USE THIS!!
    '... some other code
    oWordApp.Documents.Add

    Ambele aceste exemple de cod utilizați Creare obiect implicite. Microsoft Office Word 2003 nu pornește până când variabila este numit cel puțin o dată. Deoarece variabila poate fi numit în diferite părți ale programului, problema poate fi dificil să găsiți. Poate fi dificil pentru a verifica că problema este cauzată de când obiectul de aplicație este creat sau Document object este creat. În schimb, puteți efectua apeluri explicit pentru a crea fiecare obiect separat, 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 explicit pentru a crea fiecare obiect separat, problema este mai ușor să găsiți. Acest lucru poate, de asemenea, face codul mai ușor de citit.

  • Utilizați funcția CreateObject în loc de operatorul New atunci când creați o instanță a unei aplicații Office. Funcția CreateObject hărți îndeaproape procesul de creare majoritatea Microsoft Visual C++ clienții utilizează. CreateObjectfuncție permite, de asemenea, modificări în identificatorul CLSID al serverului între versiuni. Aveți posibilitatea să utilizați CreateObjectfunction cu începutul legate de obiecte și cu târziu legate de obiecte.

  • Verificați că șirul "ProgID" care este transmis spre CreateObject este corectă și apoi verificați că șirul "ProgID" este versiunea independentă. De exemplu, utilizați șirul "Excel.Application" în loc să utilizaţi șirul "Excel.Application.8". O versiune mai veche de Microsoft Office sau o versiune mai nouă de Microsoft Office decât versiunea care este specificat în șirul "ProgID" poate fi sistem care nu reușește.

  • Utilizați comanda Erl pentru a raporta numărul de linie de linie de cod care nu reușește. Acest lucru vă pot ajuta să depanați aplicațiile care nu poate executa în IDE. Codul următor vă spune ce obiect de automatizare nu se pot crea (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 de linie pentru a urmări eroarea.

  • Utilizarea târziu-obligatoriu după cum urmează:

    Dim oWordApp As Object

    Legare de la începutul lui obiecte necesită interfețele particularizate pentru a fi marshaled dincolo de limitele de proces. Dacă interfața particularizate nu poate fi marshaled CreateObject sau în timpul nou, primiți mesajul de eroare "429". Un obiect legat întârzii utilizează nImplementarea definite de sistem interfața care nu necesită un proxy particularizate pentru a fi marshaled. Utilizați un obiect legat târziu pentru a verifica că această procedură funcționează corect. Dacă problema apare numai dacă obiectul este legat la începutul lui, problema este în aplicația server. De obicei, puteţi reinstala aplicația cum este descris în secțiunea "Examinați Server de automatizare" din acest articol pentru a corecta problema.

Examinați server de automatizare

Cel mai frecvent motiv pentru o eroare atunci când utilizați CreateObject sau nou este o problemă care afectează aplicația server. De obicei, configurația aplicației sau instalarea aplicației provoacă problema. Pentru a depana, utilizați următoarele metode:

  • Verificați că aplicația Office pe care doriți să automatizeze este instalat pe computerul local. Asigurați-vă că executați aplicația. Pentru aceasta, faceți clic pe Start, faceți clic pe Executațiși apoi încercați să executați aplicația. Dacă nu executați aplicația manual, aplicația nu va funcționa prin automatizare.

  • Reînregistrarea aplicația după cum urmează:

    1. Faceți clic pe Startși apoi faceți clic pe Executare.

    2. În caseta de dialog Executare , tastați calea serverului și apoi adăugați/regserver la sfârșitul liniei.

    3. Faceți clic pe OK. Aplicația se execută fără înștiințare. Aplicația este ca un server de COM.

    Dacă problema apare deoarece o cheie de registry lipsește, acești pași, de obicei, corectați problema.

  • Examinați cheia LocalServer32 sub CLSID pentru aplicația pe care doriți să le automatiza. Asigurați-vă că cheia LocalServer32 indică spre locația corectă pentru aplicație. Asigurați-vă că numele de cale este într-un format de scurtă cale (DOS 8.3). Nu trebuie să înregistrați un server utilizând un nume de scurtă cale. Cu toate acestea, numele lungi calea care includ spaţii încorporate poate provoca probleme pe unele sisteme. Pentru a examina cheia de cale care este stocată pentru server, porniți Windows Registry Editor, după cum urmează:

    1. Faceți clic pe Startși apoi faceți clic pe Executare.

    2. Tastați regedit, și apoi faceți clic pe OK.

    3. Mutați cheia HKEY_CLASSES_ROOT\CLSID. CLSID pentru serverele de automatizare înregistrat pe sistem se află sub această cheie.

    4. Utilizați următoarele valori din cheia CLSID pentru a găsi cheia care reprezintă aplicația Office dorită pentru a automatiza. Examinați cheia LocalServer32 din cheia CLSID pentru calea.

      Office server

      Cheia 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}

    5. Verificați calea pentru a vă asigura că se potriveşte locația actuală a fișierului.

    Notă Nume scurt calea poate părea corect atunci când nu sunt corecte. De exemplu, atât Office și Microsoft Internet Explorer (dacă sunt instalate în locațiile lor implicite) au o scurtă cale care este similar cu C:\PROGRA~1\MICROS~X\ (unde X este un număr). Acest nume să nu apară iniţial să fie un nume de scurtă cale. Pentru a determina dacă calea corectă, urmați acești pași:

    1. Faceți clic pe Startși apoi faceți clic pe Executare.

    2. Copiați valoarea de registry și apoi lipiți valoarea în caseta de dialog Executare . Notă Eliminați parametrul /automation înainte să executați aplicația.

    3. Faceți clic pe OK.

    4. Verificați că aplicația se execută corect. Dacă aplicația se execută după ce faceți clic pe OK, serverul este înregistrat corect. Dacă aplicația nu se execută după ce faceți clic pe OK, înlocuiți valoarea cheii LocalServer32 cu calea corectă. Utilizați un nume de scurtă cale dacă puteți.

  • Test pentru deteriorarea posibile de șablonul Normal.dot sau fișier de resurse Excel.xlb. Pot apărea probleme atunci când automatizați Microsoft Word sau Microsoft Excel dacă șablonul Normal.dot în Word fie Excel.xlb resurse fișierul în Excel este deteriorat. Pentru a testa aceste fișiere, căutați local hard diskurile pentru toate instanțele de Normal.dot sau Excel.xlb. Notă Este posibil să găsiți mai multe copii ale acestor fișiere. Există un exemplar fiecare dintre aceste fişiere pentru fiecare profil de utilizator care este instalat pe sistem. Redenumiți temporar fișierele Normal.dot sau Excel.xlb fișierele și apoi executați din nou test automatizare. Word și Excel ambele crea aceste fișiere, dacă acestea nu le găsiți. Verificați dacă funcționează codul. Dacă codul funcționează atunci când se creează un nou fișier Normal.dot, ștergeți fișierele pe care le-ați redenumit. Aceste fișiere sunt deteriorate. Dacă codul nu funcționează, trebuie să reveniți acestor fișiere pe numele lor originală de fișier pentru a salva toate setările particularizate care sunt salvate în aceste fișiere.

  • Executați aplicația sub contul de Administrator. Servere Office necesită acces de citire/scriere în registry și la unitatea de disc. Servere Office nu se încarcă corect dacă setările de securitate curente refuza accesul la citire/scriere.

Examinați sistemului

Configurare sistem, de asemenea, pot apărea probleme pentru crearea de servere de COM afara procesului. Pentru a depana, utilizați următoarele metode pe sistem pe care se produce eroarea:

  • Determinați dacă problema apare cu orice server din afara procesului. Dacă aveți o aplicație care utilizează un anumit server COM (cum ar fi Word), testați un alt server din afara procesului pentru a vă asigura că problema nu este care apar în stratul COM în sine. Dacă se poate crea un server de afara procesului COM pe computer, reinstalați fișierele de sistem OLE, cum este descris în secțiunea "Reinstalarea Microsoft Office" din acest articol sau reinstalarea sistemului de operare pentru a rezolva problema.

  • Examinați numerele de versiune pentru fișierele de sistem OLE care gestionează automatizare. Aceste fișiere sunt instalate de obicei ca un set. Aceste fișiere trebuie să se potrivească cu numerele de compilare. Un utilitar de configurare incorectă pot instala din greșeală fișierele separat. Acest lucru provoacă fișiere să fie nepotrivite. Pentru a evita problemele în automatizare, examinați fișierele pentru a vă asigura că fișierele compilările sunt potrivite. Fișierele de automatizare se află în directorul Windows\System32. Examinați următoarele fișiere.

    Nume de fișier

    Versiune

    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 de fișier, faceți clic dreapta pe fișier în Windows Explorer și apoi faceți clic pe Proprietăți. Notați ultimele patru cifre de versiunea de fișier (numărul de compilare) și fișierul a fost modificat ultima data. Asigurați-vă că aceste valori sunt aceleași pentru toate fișierele de automatizare. Notă Următoarele fișiere sunt pentru Windows 10 versiunea 1709, compilare 16299.431. Aceste numere și datele sunt numai exemple. De valori pot fi diferite.

  • Utilizați utilitarul de configurare sistem (Msconfig.exe) pentru a examina startup serviciile și sistem pentru aplicații terțe care ar putea restricționa executarea de cod î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 Utilitarul de configurare sistem depanare Setări complexe De exemplu, Outlook automatizare aplicații poate să nu reușească deoarece se execută un program antivirus care are "script blocker" caracteristici. Notă Dezactivați programul antivirus doar temporar pe 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 terțe: Dacă această metodă rezolvă problema, contactați distribuitorul antivirus terț pentru mai multe informații despre o actualizare pentru programul antivirus.

    1. În meniul fișier , faceți clic pe Opțiuniși apoi faceți clic pe programe de completare.

    2. COM gestionează programele de completare, și apoi faceți clic pe Salt. Notă Se deschide caseta de dialog programe de completare COM .

    3. Debifați caseta de selectare pentru orice program de completare terț și apoi faceți clic pe OK.

    4. Reporniți Outlook.

Reinstalați Office

Dacă niciuna dintre procedurile anterioare nu rezolvă problema, eliminați, apoi reinstalați Office.

Pentru mai multe informații, consultați Office următorul articol:

Descărcați și instalați sau reinstalați Office 365 sau Office 2016 pe un PC sau Mac

Referințe

Pentru mai multe informații despre automatizarea Office și mostre de cod, accesați următorul site Web Microsoft:

Introducere în dezvoltarea Office

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.

Au fost utile aceste informații?

Cât de mulțumit sunteți de calitatea limbajului?
Ce v-a afectat experiența?
Apăsând pe Trimitere, feedbackul dvs. va fi utilizat pentru a îmbunătăți produsele și serviciile Microsoft. Administratorul dvs. IT va avea posibilitatea să colecteze aceste date. Angajamentul de respectare a confidențialității.

Vă mulțumim pentru feedback!

×