Yhteenveto
Kun käytät Microsoft Visual Basicin Uusi-operaattoria tai CreateObject-funktiota Microsoft Office -sovelluksen esiintymän luomiseen, näyttöön voi tulla seuraava virhesanoma:
Suorituksenaikainen virhe '429': ActiveX-komponentti ei voi luoda objektia
Tämä virhe ilmenee, kun COM (Component Object Model) -malli ei voi luoda pyydettyä Automaatio-objektia, joten Automaatio-objekti ei ole käytettävissä Visual Basicissa. Tämä virhe ei ilmene kaikissa tietokoneissa.
Tässä artikkelissa kerrotaan, miten voit diagnosoida ja ratkaista yleisiä ongelmia, jotka voivat aiheuttaa tämän virheen.Lisätietoja
Visual Basicissa virheen 429 syitä on useita. Virhe ilmenee, jos jokin seuraavista ehdoista täyttyy:
-
Sovelluksessa on virhe.
-
Järjestelmän määrityksessä on virhe.
-
Osa puuttuu.
-
Siinä on vioittunut komponentti.
Voit selvittää virheen syyn eristämällä ongelman. Jos saat virhesanoman "429" asiakastietokoneessa, eristä ja ratkaise virhe Microsoft Office -sovelluksissa seuraavien tietojen avulla.
Huomautus Jotkin seuraavista tiedoista saattavat koskea myös muita kuin Office COM -palvelimia. Tässä artikkelissa kuitenkin oletetaan, että haluat automatisoida Office-sovellukset.Tarkista koodi
Yritä ennen virheen vianmääritystä eristää yksi koodirivi, joka saattaa aiheuttaa ongelman.
Jos huomaat, että yksi koodirivi saattaa aiheuttaa ongelman, suorita seuraavat toimenpiteet:-
Varmista, että koodi käyttää eksplisiittistä objektien luomista.
Ongelmat on helpompi tunnistaa, jos ne on rajattu yhteen toimintoon. Etsi esimerkiksi implisiittisen objektin luominen, jota käytetään yhtenä seuraavista. Koodiesimerkki 1Application.Documents.Add 'DON'T USE THIS!!
Koodiesimerkki 2
Dim oWordApp As New Word.Application 'DON'T USE THIS!! '... some other code oWordApp.Documents.Add
Molemmat koodiesimerkit käyttävät implisiittisen objektin luomista. Microsoft Office Word 2003 käynnistyy vasta, kun muuttujaa kutsutaan vähintään kerran. Koska muuttujaa saatetaan kutsua ohjelman eri osiin, ongelmaa voi olla vaikea löytää. Voi olla vaikeaa varmistaa, että ongelma johtuu Sovellus-objektin luomisen tai Tiedosto-objektin luomisen yhteydessä.
Sen sijaan voit tehdä eksplisiittisiä kutsuja luodaksesi kunkin objektin erikseen seuraavasti.Dim oWordApp As Word.Application Dim oDoc As Word.Document Set oWordApp = CreateObject("Word.Application") '... some other code Set oDoc = oWordApp.Documents.Add
Kun soitat eksplisiittisiä kutsuja kunkin objektin luomiseksi erikseen, ongelma on helpompi eristää. Tämä voi myös helpottaa koodin lukemista.
-
Käytä CreateObject-funktiotaUusi-operaattorin sijaan, kun luot Office-sovelluksen esiintymän.
CreateObject-funktio yhdistää tiiviisti luontiprosessin, jota useimmat Microsoft Visual C++-asiakasohjelmat käyttävät. CreateObject-funktio sallii myös muutokset palvelimen CLSID-tunnukseen versioiden välillä. Voit käyttää CreateObject-funktiota aikaisessa vaiheessa sidottujen objektien ja myöhässä olevien objektien kanssa. -
Varmista, ettäCreateObjectiin
välitetty "ProgID"-merkkijono on oikea, ja varmista sitten, että "ProgID"-merkkijono on versiosta riippumaton. Käytä esimerkiksi Excel.Application-merkkijonoa Excel.Application.8-merkkijonon käyttämisen sijaan. Järjestelmällä, joka epäonnistuu, voi olla vanhempi Microsoft Office -versio tai uudempi Microsoft Office -versio kuin "ProgID"-merkkijonossa määrittämäsi versio. -
Erl-komennon avulla voit raportoida sen koodirivin rivinumeron, joka ei onnistu. Tämä voi auttaa korjaamaan sovelluksia, joita ei voi suorittaa IDE:ssä. Seuraava koodi kertoo, mitä Automaatio-objektia ei voi luoda (Microsoft Word tai 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
Seuraa virhettä MsgBox-funktion ja rivinumeron avulla.
-
Käytä viimmentä sidontaa seuraavasti:
Dim oWordApp As Object
Aikaiset sidotut objektit edellyttävät mukautettujen rajapintojen järjestämistä prosessin rajojen yli. Jos mukautettua käyttöliittymää ei voi järjestää CreateObjectin tai Uuden aikana, näyttöön tulee virhesanoma "429". Myöhässä oleva objekti käyttää järjestelmän määrittämää IDispatch-liittymää, joka ei edellytä mukautetun välityspalvelimen järjestämistä. Tarkista myöhässä olevan objektin avulla, että tämä toimintosarja toimii oikein.
Jos ongelma ilmenee vain, kun objekti on aikaisessa vaiheessa, ongelma on palvelinsovelluksessa. Yleensä voit asentaa sovelluksen uudelleen tämän artikkelin Tutki automaatiopalvelinta -osiossa kuvatulla tavalla ongelman korjaamiseksi.
Automaatiopalvelimen tutkiminen
Yleisin syy virheeseen Käytettäessä CreateObject- tai Uusi-toimintoa on ongelma, joka vaikuttaa palvelinsovellukseen. Yleensä ongelman aiheuttaa sovelluksen määritys tai sovelluksen määritys. Voit tehdä vianmäärityksen seuraavilla tavoilla:
-
Varmista, että office-sovellus, jonka haluat automatisoida, on asennettu paikalliseen tietokoneeseen. Varmista, että voit suorittaa sovelluksen. Voit tehdä tämän valitsemalla Käynnistä, valitsemalla
Suorita ja yrittämällä sitten suorittaa sovelluksen. Jos et voi suorittaa sovellusta manuaalisesti, sovellus ei toimi automaation kautta. -
Rekisteröi hakemus uudelleen seuraavasti:
-
Napsauta Käynnistä-painiketta ja valitse sitten Suorita.
-
Kirjoita Suorita-valintaikkunaan palvelimen polku ja liitä / RegServer rivin loppuun.
-
Valitse OK.
Sovellus toimii äänettömästi. Sovellus rekisteröidään uudelleen COM-palvelimeksi.
Jos ongelma ilmenee, koska rekisteriavain puuttuu, nämä vaiheet yleensä korjaavat ongelman.
-
-
Tarkista clsid-tunnuksen localserver32-näppäin sen sovelluksen kohdalla, jonka haluat automatisoida. Varmista, että LocalServer32-näppäin osoittaa sovelluksen oikeaan sijaintiin. Varmista, että polun nimi on lyhyessä muodossa (DOS 8.3). Sinun ei tarvitse rekisteröidä palvelinta lyhyen polun nimen avulla. Pitkät polkujen nimet, jotka sisältävät upotettuja välilyöntejä, voivat kuitenkin aiheuttaa ongelmia joissakin järjestelmissä.
Jos haluat tutkia palvelimeen tallennettua polkuavainta, käynnistä Windowsin rekisterieditori seuraavasti:-
Napsauta Käynnistä-painiketta ja valitse sitten Suorita.
-
Kirjoita regedit ja valitse sitten OK.
-
Siirry HKEY_CLASSES_ROOT\CLSID-näppäimeen.
Järjestelmän rekisteröityjen automaatiopalvelimien CLSID-tunnukset ovat tämän avaimen alapuolella. -
Seuraavien CLSID-avaimen arvojen avulla voit etsiä office-sovellusta edustavan avaimen, jonka haluat automatisoida. Tarkista polun CLSID-avaimen LocalServer32-avain.
Office-palvelin
CLSID-näppäin
Access.Application
{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
Excel.Application
{00024500-0000-0000-C000-00000000046}
Outlook.Application
{0006F03A-0000-0000-C000-00000000046}
PowerPoint.Application
{91493441-5A91-11CF-8700-00AA0060263B}
Word.Application
{000209FF-0000-0000-C000-00000000046}
-
Tarkista polku ja varmista, että se vastaa tiedoston todellista sijaintia.
Huomautus Lyhyiden polkujen nimet saattavat vaikuttaa oikeilta, kun ne eivät ole oikein. Esimerkiksi sekä Officella että Microsoft Internet Explorerilla (jos ne on asennettu oletussijainteihin) on lyhyt polku, joka on samanlainen kuin C:\PROGRA~1\MICROS~X\ (jossa
X on luku). Nimi ei ehkä aluksi näytä lyhyen polun nimeltä. Voit selvittää, onko polku oikea, toimimalla seuraavasti:-
Napsauta Käynnistä-painiketta ja valitse sitten Suorita.
-
Kopioi arvo rekisteristä ja liitä arvo Suorita-valintaikkunaan .
Huomautus Poista /automation-valitsin ennen sovelluksen käynnistämistä. -
Valitse OK.
-
Varmista, että sovellus toimii oikein.
Jos sovellus suoritetaan, kun valitset OK, palvelin on rekisteröity oikein. Jos sovellus ei toimi, kun valitset OK, korvaa LocalServer32-näppäimen arvo oikealla polulla. Käytä lyhyttä polun nimeä, jos mahdollista.
-
-
Testaa Normal.dot-mallin tai Excel.xlb-resurssitiedoston vioittumista. Microsoft Wordin tai Microsoft Excelin automatisoinnin aikana voi ilmetä ongelmia, jos Wordin Normal.dot-malli tai Excelin Excel.xlb-resurssitiedosto on vioittunut. Jos haluat testata näitä tiedostoja, etsi paikallisista kiintolevyistä kaikki Normal.dot- tai Excel.xlb-esiintymät.
Huomautus Näistä tiedostoista voi olla useita kopioita. Kustakin näistä tiedostoista on yksi kopio kullekin järjestelmään asennetulle käyttäjäprofiilille. Nimeä Normal.dot-tiedostot tai Excel.xlb-tiedostot tilapäisesti uudelleen ja suorita automaatiotesti uudelleen. Word ja Excel luovat molemmat nämä tiedostot, jos niitä ei löydy. Varmista, että koodi toimii. Jos koodi toimii, kun uusi Normal.dot-tiedosto luodaan, poista uudelleennimetyt tiedostot. Nämä tiedostot ovat vioittuneet. Jos koodi ei toimi, sinun on palautettava nämä tiedostot niiden alkuperäisiin tiedostonimiin, jotta voit tallentaa näihin tiedostoihin tallennetut mukautetut asetukset. -
Suorita sovellus Järjestelmänvalvoja-tilillä. Office-palvelimet edellyttävät rekisterin ja levyaseman luku- ja kirjoitusoikeutta. Office-palvelimet eivät ehkä lataudu oikein, jos nykyiset suojausasetuksesi estävät luku- ja kirjoitusoikeuden.
Tarkista järjestelmä
Järjestelmän määritys voi myös aiheuttaa ongelmia prosessien ulkopuolisen COM-palvelimen luomisessa. Voit tehdä vianmäärityksen käyttämällä seuraavia menetelmiä järjestelmässä, jossa virhe ilmenee:
-
Selvitä, ilmeneekö ongelma prosessien ulkopuolisessa palvelimessa. Jos sinulla on sovellus, joka käyttää tiettyä COM-palvelinta (kuten Wordia), testaa eri prosessin ulkoista palvelinta varmistaaksesi, että ongelma ei ilmene itse COM-kerroksessa. Jos et voi luoda prosessista poistuvaa COM-palvelinta tietokoneeseen, asenna OLE-järjestelmätiedostot uudelleen tämän artikkelin "Microsoft Officen uudelleenasennus" -osiossa kuvatulla tavalla tai asenna käyttöjärjestelmä uudelleen ongelman ratkaisemiseksi.
-
Tarkista automaatiota hallitsevien OLE-järjestelmätiedostojen versionumerot. Nämä tiedostot asennetaan yleensä joukkona. Näiden tiedostojen on vastattava koontiversioiden numeroita. Väärin määritetty asennusapuohjelma voi vahingossa asentaa tiedostot erikseen. Tämä aiheuttaa tiedostojen ristiriidan. Voit välttää automaatioon liittyvät ongelmat tarkistamaan tiedostot ja varmistamaan, että tiedostojen koontiversiot vastaavat toisiaan.
Automaatiotiedostot sijaitsevat Windows\System32-hakemistossa. Tarkista seuraavat tiedostot.Tiedostonimi
Versio
Muokkauspäivä
Asycfilt.dll
10.0.16299.15
29. syyskuuta 2017
Ole32.dll
10.0.16299.371
29. maaliskuuta 2018
Oleaut32.dll
10.0.16299.431
3. toukokuuta 2018
Olepro32.dll
10.0.16299.15
29. syyskuuta 2017
Stdole2.tlb
3.0.5014
29. syyskuuta 2017
-
Käytä Järjestelmän määritys -apuohjelmaa (Msconfig.exe) sellaisten kolmansien osapuolten sovellusten palveluiden ja järjestelmän käynnistyksen tutkimiseen, jotka saattavat rajoittaa koodin suorittamista Office-sovelluksessa
Huomautus Poista virustentorjuntaohjelma käytöstä vain tilapäisesti testijärjestelmässä, joka ei ole yhteydessä verkkoon. Vaihtoehtoisesti voit poistaa kolmannen osapuolen apuohjelmat käytöstä noudattamalla seuraavia ohjeita Outlookissa: Jos tämä menetelmä ratkaisee ongelman, ota yhteyttä kolmannen osapuolen virustentorjuntaohjelman toimittajaan saadaksesi lisätietoja virustentorjuntaohjelman päivityksestä.-
Valitse Tiedosto-valikossaAsetukset ja valitse sitten Apuohjelmat.
-
Valitse COM-apuohjelmien hallinta ja valitse sitten Siirry.
Huomautus COM-apuohjelmat-valintaikkuna avautuu. -
Poista minkä tahansa kolmannen osapuolen apuohjelman valintaruudun valinta ja valitse sitten OK.
-
Käynnistä Outlook uudelleen.
-
Officen asentaminen uudelleen
Jos mikään aiemmista toimenpiteistä ei ratkaise ongelmaa, poista Office ja asenna se sitten uudelleen.
Lisätietoja on seuraavassa Office-artikkelissa:
Lisätietoja
Lisätietoja Officen automaatio- ja koodiesimerkeistä on seuraavassa Microsoftin sivustossa: