Kokkuvõte

Kui kasutate Uus kasutaja või funktsiooni CreateObject Microsoft Visual Basicu Microsoft Office'i rakenduse eksemplari loomine, võidakse kuvada järgmine tõrketeade:

Run-time error '429': ActiveX komponent ei saa objekti luua

See tõrge ilmneb juhul, kui Component Object Model (COM) ei saa luua taotletud ActiveX -objekt ja ActiveX -objekt on seetõttu pole Visual Basic. See viga ei esine kõigis arvutites. Selles artiklis kirjeldatakse, kuidas diagnoosida ja lahendada levinud probleeme, mis võib seda tõrget põhjustada.

Lisateave

Visual Basic, on mitmeid põhjuseid vea 429. Tõrge ilmneb juhul, kui mõni järgmistest tingimustest on täidetud:

  • Rakendus on viga.

  • Süsteemi konfiguratsioon on viga.

  • On puudu.

  • Seal on kahjustatud osa.

Vea põhjuse leidmiseks isoleerida probleem. Kliendi arvutis "429" tõrketeate saamisel kasutage järgmist teavet isoleerida ja tõrke Microsoft Office'i rakendustes. Märkus. Järgmine teabest võivad taotleda Office COM servereid. Kuid see artikkel eeldab, et soovite automatiseerida Office'i rakendused.

Kontrollige koodi

Enne kui te tõrkeotsing tõrge, proovige välja selgitada koodirea, mis võivad probleemi põhjustada. Kui avastate, et üks rida koodi probleemi põhjustada, nende protseduuride lõpuleviimiseks:

  • Veenduge, et kood kasutab selgesõnalise objekti loomist. Probleemid on lihtsam tuvastada kui nad on vähenenud alla ühe toimingu. Näiteks otsida kaudne objektide loomine, mida kasutatakse ühte järgmistest. Koodi näidis 1

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

    Koodi näidis 2

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

    Mõlemad proovid koodi kasutada kaudsete objekti loomist. Microsoft Office Word 2003 ei käivitu enne, kui muutuja on kutsutud vähemalt üks kord. Kuna eri osades programmi nimetatakse muutuja, võib probleem olla raske leida. See võib olla raske kontrollida, et probleemi põhjuseks või kui rakendusobjekt on loodud dokumendi objekt on loodud. Selle asemel saate selgesõnaliselt helistada luua iga objekt eraldi, järgmiselt.

    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... some other code
    Set oDoc = oWordApp.Documents.Add

    Kui selgesõnaliselt helistada luua iga objekt eraldi, probleem on lihtsam eraldada. See võib teha ka kood lihtsam lugeda.

  • Kasutage funktsiooni CreateObject asemel Uus kasutaja Office'i rakenduse eksemplari loomisel. Funktsiooni CreateObject kaardid loomise protsessi, et enamik Microsoft Visual C++ kliente kasutada. CreateObjectfunktsioon võimaldab ka muutused CLSID serveris versioonide vahel. Kasutage funktsiooni CreateObjectfunktsioon alguses seotud objektid ja hilja seotud objekte.

  • Veenduge, et "ProgID" stringi, mis edastatakse CreateObject on õige, ja seejärel veenduge, et "ProgID" string on sõltumatu versioon. Kasutage näiteks "Excel.Application" string asemel "Excel.Application.8" stringi abil. Süsteem, mis ei ole võib-olla Microsoft Office'i vanem versioon või uuemas versioonis Microsoft Office teie määratud stringi "ProgID" versioon.

  • Käsu Erl aruande rida koodi, mis ei õnnestu. See võib aidata teil siluda rakendusi, mis ei saa käivitada IDE. Järgmine kood ütleb teile ActiveX -objekt ei saa luua (Microsoft Wordi või 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

    Tõrge jälgimiseks kasutada funktsiooni MsgBox ja rea number.

  • Kasutage hiline sidumine järgmiselt:

    Dim oWordApp As Object

    Varase seotud objektid vajavad oma kohandatud liidesed marshaledfunktsiooni kogu protsessi piirid. Kui kohandatud kasutajaliides ei saa marshaledfunktsiooni CreateObject või jooksul Uus, kuvatakse tõrketeade "429". Hilinenud seotud objekt kasutab IDispatch süsteemi määratletud liidese, mis vajavad kohandatud puhver tuleb marshaled. Tuleb kasutada-toiminguülemad veendumaks, et see protseduur toimib õigesti. Kui probleem ilmneb ainult siis, kui objekt on alguses seotud, probleem on serveri rakendus. Tavaliselt saate uuesti installida rakendus nagu kirjeldatud probleemi lahendamiseks käesoleva artikli jaotises "Uurida automaatika Server".

Uurida automaatika server

Tõrge tekkida CreateObject või Uus kõige sagedasemaks põhjuseks on probleem, mis mõjutab serveri rakendus. Tavaliselt rakenduse konfigureerimine või taotluse seadistuse põhjustab probleemi. Tõrkeotsingu sooritamiseks kasutage järgmist meetodit.

  • Veenduge, et kohalikus arvutis on installitud Office'i rakendus, mida soovite automatiseerida. Veenduge, et käivitada rakendus. Selleks klõpsake nupul Start, klõpsake nuppu Käivitadaja proovige rakenduse käivitamiseks. Kui te ei saa käivitada rakenduse käsitsi, automatiseerimise kaudu rakendus ei tööta.

  • Registreerige uuesti rakendus järgmiselt:

    1. Klõpsake nuppu Startja seejärel klõpsake nuppu Käivita.

    2. Dialoogiboksi Käivita tippige serveri tee ja seejärel lisada/RegServer rea lõppu.

    3. Klõpsake nuppu OK. Rakendus töötab vaikselt. Taotlus on registreerituks COM server.

    Kui probleem ilmneb, sest registri võti on puudu, need sammud tavaliselt probleemi lahendada.

  • Uurida LocalServer32 võtme CLSID rakendus, mida soovite automatiseerida. Veenduge, et LocalServer32 Keypoints rakenduse õigesse asukohta. Veenduge, et teenimi on lühike tee (DOS 8.3) vormingus. Teil on server registreerida, kasutades lühikese tee nimi. Aga pikk tee nimesid, mis sisaldavad tühikuid võib põhjustada probleeme mõnes süsteemis. Uurida tee võti, mis on salvestatud serveri, käivitage Windows Registry Editor, järgmiselt:

    1. Klõpsake nuppu Startja seejärel klõpsake nuppu Käivita.

    2. Tippige käsk regeditja seejärel klõpsake nuppu OK.

    3. Liikuda HKEY_CLASSES_ROOT\CLSID olevate võti. Selle võtme on registreeritud automaatika süsteemi serverite CLSID-d.

    4. Järgmised väärtused CLSID-võtme abil leida võti, mis tähistab Office'i rakendus, mida soovite automatiseerida. Uurida tee CLSID-võtme LocalServer32 võti.

      Office server

      CLSID-võtmele

      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. Kontrollige, kas tee veendumaks, et see ühilduks faili tegelik asukoht.

    Märkus. Lühike tee nimesid võib tunduda õige, kui need ei ole õiged. Näiteks Office ja Microsoft Internet Explorer (kui need on installitud vaikimisi käivitada) on lühike tee, mis sarnaneb C:\PROGRA~1\MICROS~X\ (kus X on arv). See nimi ei pruugi esialgu olema lühike tee nimi. Et teha kindlaks, kas tee on õige, toimige järgmiselt.

    1. Klõpsake nuppu Startja seejärel klõpsake nuppu Käivita.

    2. Registri väärtus kopeerida ja seejärel kleepida väärtus dialoogiboksi Käivita . Märkus.Eemaldage/Automation lüliti, enne kui käivitate rakenduse.

    3. Klõpsake nuppu OK.

    4. Veenduge, et rakendus töötab õigesti. Kui rakendus töötab pärast seda, kui klõpsate nuppu OK, server on õigesti registreeritud. Kui rakendus ei käivitu pärast seda, kui klõpsate nuppu OK, asendada LocalServer32 võtme väärtus õige tee. Lühike tee nime kasutada võimalusel.

  • Test rikutud malli Normal.dot või ressursi faili Excel.xlb. Probleeme võib ilmneda juhul, kui teil automatiseerimiseks Microsoft Wordi või Microsoft Exceli, kui on rikutud kas mallis sõna või Excel.xlb ressursi faili Excelis. Katsetada neid faile otsida kohaliku kõvakettad kõik eksemplarid Normal.dot või Excel.xlb. Märkus. Võite leida neid faile mitme koopia. On üks eksemplar neid faile iga kasutaja profiili, mis on süsteemi installitud. Normal.dot faile või faili Excel.xlb ajutiselt ümber nimetada ja seejärel käivitage uuesti oma automaatika test. Wordi ja Exceli luua nii need failid, kui nad ei leia neid. Veenduge, et kood töötab. Kui koodi kui uue faili Normal.dot on loodud, kustutada faile, ümber nimetatud. Need failid on rikutud. Kui kood ei tööta, peate uuesti Algne failinimi salvestada kohandatud sätted, mis salvestatakse need failid need failid.

  • Käivitage rakendus administraatori kasutajakontot. Office'i serverite nõuda lugemine/kirjutamine juurdepääsu registri ja ketta. Kui teie praegused turvasätted Read/Write juurdepääsu keelamine, ei pruugi Office'i serverite õigesti laadida.

Süsteemi

Süsteemi konfiguratsioon võib põhjustada ka probleemid out protsess COM serverite loomist. Tõrkeotsingu sooritamiseks kasutage järgmisi meetodeid, millel on viga süsteemis:

  • Tehke kindlaks, kas probleem ilmneb mis tahes out protsess server. Kui teil on rakendus, mis kasutab teatud COM server (näiteks Word), test eri out protsess server veendumaks, et probleem ei ole COM kiht, ise tekib. Kui arvutis ei saa luua out protsess COM server, installige OLE süsteemi failid on kirjeldatud käesoleva artikli jaotises "Uuesti installida Microsoft Office'i" või probleemi lahendamiseks operatsioonisüsteemi uuesti installima.

  • Uurida OLE süsteemi failide haldamine automaatika versiooninumbrid. Need failid installitakse tavaliselt komplektina. Nende failide vaste ehitada numbrid. Valesti konfigureeritud häälestusutiliiti kogemata installida faile eraldi. See põhjustab failid olla sobimatud. Automaatika probleemide vältimiseks vaatab läbi faile, veenduge, et failid järkude vastendatakse. Automaatika failid asuvad Windows\System32 kaustas. Kontrollige järgmiste failide.

    Faili nimi

    Versioon

    Muutmise kuupäev

    Asycfilt.dll

    10.0.16299.15

    29. september 2017

    Ole32.dll

    10.0.16299.371

    29. märts 2018

    Oleaut32.dll

    10.0.16299.431

    3. mai 2018

    Olepro32.dll

    10.0.16299.15

    29. september 2017

    Stdole2.tlb

    3.0.5014

    29. september 2017

    Uurige faili versioon, paremklõpsake Windows Exploreris faili ja seejärel klõpsake nuppu Atribuudid. Märkus neli viimast numbrit faili versioon (järgunumbrit) ja faili viimase muutmise kuupäev. Veenduge, et need väärtused on sama automaatika failid. Märkus. Järgmised failid on Windows 10 versiooni 1709, järk 16299.431. Need numbrid ja kuupäevad on ainult näited. Väärtused võivad olla erinevad.

  • Kasutage süsteemi konfigureerimise utiliit (Msconfig.exe) teenused ja süsteemi käivitamisel kolmanda osapoole rakendusi, mis võivad piirata jooksvad koodi rakenduses Office. Msconfig.exe kohta lisateabe saamiseks lugege järgmist Microsofti teabebaasi (Knowledge Base) artiklit:

    181966 Süsteemi konfigureerimise utiliit täpsemate sätete tõrkeotsing Näiteks Outlook automatiseerimine rakendused ei pruugi sest teil töötab viirusetõrje programmi, mis on "skripti blokeerija" funktsioone. Märkus. Keelake viirusetõrje programm ainult ajutiselt test süsteemis, mis on ühendatud võrku. Teise võimalusena toimige järgmiselt Outlookis kolmanda osapoole lisandmoodulite keelamine Kui see meetod lahendab probleemi, pöörduge viirusetõrjeprogramm selle värskenduse kohta lisateabe saamiseks teise tootja viirusetõrjetarkvara.

    1. Klõpsake menüü fail käsku Suvandidja klõpsake Add-ins.

    2. Klõpsake hallata COM-lisandmoodulidja klõpsake minna. Märkus. Avaneb dialoogiboks COM - lisandmoodulid .

    3. Tühjendage ruut mis tahes kolmanda osapoole lisandmoodul ja seejärel klõpsake nuppu OK.

    4. Käivitage Outlook uuesti.

Installige Office uuesti

Kui ükski eelmine kord probleemi lahendada, eemaldamine ja uuesti Office.

Lisateabe saamiseks lugege Office järgmist artiklit:

Alla laadida ja installida või uuesti installida Office 365 või Office 2016 PC või Mac

Viited

Office'i automatiseerimine ja koodi näidised kohta lisateabe saamiseks külastage järgmist Microsofti veebisaiti:

Alustamine rakendusega Office arendus

Kas vajate veel abi?

Täiendage oma oskusi
Tutvuge koolitusmaterjalidega
Kasutage uusi funktsioone enne teisi
Liitu Microsofti Insideri programmis osalejad

Kas sellest teabest oli abi?

Kui rahul te tõlkekvaliteediga olete?
Mis mõjutas teie hinnangut?

Täname tagasiside eest!

×