Sažetak
Kada koristite novi operator ili funkciju CreateObject u programu Microsoft Visual Basic da biste stvorili instancu aplikacije sustava Microsoft Office, možda će vam se prikazati sljedeća poruka o pogrešci:
Pogreška u pokretanju "429": ActiveX komponenta ne može stvarati objekt
Ta se pogreška pojavljuje kada komponenta Object Model (COM) ne može stvoriti zatraženi automatizacijski objekt, a automatizacijski objekt je, Dakle, nedostupan za Visual Basic. Ta se pogreška ne pojavljuje na svim računalima. U ovom se članku opisuje kako dijagnosticirati i riješiti česte probleme koji mogu uzrokovati tu pogrešku.
Dodatne informacije
U programu Visual Basic postoji nekoliko uzroka pogreške 429. Pogreška se pojavljuje ako je bilo koji od sljedećih uvjeta istinit:
-
Došlo je do pogreške u aplikaciji.
-
Došlo je do pogreške u konfiguraciji sustava.
-
Postoji komponenta koja nedostaje.
-
Postoji oštećena komponenta.
Da biste pronašli uzrok pogreške, izdvojit ćete problem. Ako vam se prikaže poruka o pogrešci "429" na klijentskom računalu, upotrijebite sljedeće podatke da biste izolirali i riješili pogrešku u aplikacijama sustava Microsoft Office. Napomena Neki od sljedećih podataka mogu se primijeniti i na servere koji nisu u sustavu Office. U ovom se članku, međutim, pretpostavlja da želite automatizirati aplikacije sustava Office.
Pregled koda
Prije otklanjanja pogrešaka pokušajte izolirati jedan redak koda koji može prouzročiti problem. Ako otkrijete da jedan redak koda može prouzročiti problem, dovršite ove procedure:
-
Provjerite koristi li kod eksplicitno stvaranje objekata. Problemi će se lakše identificirati ako ih se suzite na jednu akciju. Primjerice, potražite implicitno stvaranje objekta koje se koristi kao jedno od sljedećeg. Ogledni broj 1
Application.Documents.Add 'DON'T USE THIS!!
Ogledni broj 2
Dim oWordApp As New Word.Application 'DON'T USE THIS!! '... some other code oWordApp.Documents.Add
Oba uzorka koda koriste implicitno stvaranje objekata. Microsoft Office Word 2003 ne pokreće se dok se varijablu ne zove barem jednom. Budući da se varijablu može zvati u raznim dijelovima programa, problem bi mogao biti težak za pronalaženje. Možda će biti teško provjeriti je li problem uzrokovano kada se stvori objekt aplikacije ili kada se stvori objekt dokumenta . Umjesto toga možete unijeti eksplicitne pozive da biste svaki objekt stvorili odvojeno, kako slijedi.
Dim oWordApp As Word.Application Dim oDoc As Word.Document Set oWordApp = CreateObject("Word.Application") '... some other code Set oDoc = oWordApp.Documents.Add
Kada izrazite pozive da biste svaki objekt stvorili odvojeno, problem je jednostavnije izolirati. To može olakšati i čitanje koda.
-
Prilikom stvaranja instance aplikacije sustava Office koristite funkciju CreateObject , a ne novi operator. Funkcija CreateObject usko mapira postupak stvaranja koji većina klijenata programa Microsoft Visual C++ koristi. Funkcija CreateObjectomogućuje i promjene u CLSID-u poslužitelja između verzija. Možete koristiti funkciju CreateObjects ranijim objektima i s krajem povezanih objekata.
-
Provjerite je li niz "ProgID" koji je proslijeđen CreateObject je ispravan, a zatim provjerite je li niz "ProgID" neovisna verzija. Primjerice, koristite niz "Excel. Application" umjesto da koristite niz "Excel. Application. 8". Sustav koji ne uspijeva može imati stariju verziju sustava Microsoft Office ili noviju verziju sustava Microsoft Office od verzije koju ste naveli u nizu "ProgID".
-
Pomoću naredbe Erl prijavite broj retka koda koji ne uspijeva. To će vam pomoći prilikom ispravljanja pogrešaka u aplikacijama koje se ne mogu pokretati u programu IDE. Sljedeći kod pokazuje koji objekt automatizacije nije moguće stvoriti (Microsoft Word ili 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
Pomoću funkcije MsgBox i broja retka pratite pogrešku.
-
Koristite kasniju obvezu na sljedeći način:
Dim oWordApp As Object
Ranovezani objekti zahtijevaju da njihova prilagođena sučelja budu močvarno vezana po granicama procesa. Ako prilagođeno sučelje nije moguće smjestiti tijekom CreateObject ili tijekom novog, primit ćete poruku o pogrešci "429". Objekt koji kasni na vrijeme koristi sustav IDispatch – definirano sučelje za koje nije potreban sastanak prilagođenog proxyja. Pomoću kasno povezanog objekta provjerite funkcionira li postupak ispravno. Ako se problem pojavljuje samo kada je objekt rano povezan, problem se nalazi u aplikaciji poslužitelj. Aplikaciju obično možete ponovno instalirati kao što je opisano u odjeljku "ispitivanje poslužitelja za automatizaciju" u ovom članku da biste riješili problem.
Pregled poslužitelja za automatizaciju
Najčešći razlog pogreške koja se pojavljuje kada koristite CreateObject ili New jest problem koji utječe na aplikaciju poslužitelja. U pravilu, Konfiguracija aplikacije ili postavljanje aplikacije uzrokuje problem. Da biste otklonili poteškoće, koristite sljedeće metode:
-
Provjerite je li aplikacija sustava Office koju želite automatizirati instalirana na lokalnom računalu. Provjerite možete li pokrenuti aplikaciju. Da biste to učinili, kliknite Start, zatim Pokrenite, a zatim pokušajte pokrenuti aplikaciju. Ako aplikaciju ne možete ručno pokrenuti, aplikacija neće funkcionirati putem automatizacije.
-
Ponovno Registrirajte aplikaciju na sljedeći način:
-
Kliknite Start, a zatim Pokreni.
-
U dijaloški okvir Pokreni upišite put poslužitelja, a zatim dodajte /regserver na kraj retka.
-
Kliknite U redu. Aplikacija će se pokrenuti u tišini. Aplikacija se ponovno registrira kao COM poslužitelj.
Ako se problem pojavljuje jer nedostaje ključ registra, u tim se koracima obično ispravlja problem.
-
-
Ispitajte ključ LocalServer32 u CLSIDU za aplikaciju koju želite automatizirati. Provjerite upućuje li ključ LocalServer32 na ispravno mjesto za aplikaciju. Provjerite je li naziv puta u obliku kratkog puta (DOS 8,3). Ne morate registrirati poslužitelj pomoću kratkog naziva puta. Međutim, dugi naziv puta koji obuhvaća ugrađene razmake može prouzročiti probleme na nekim sustavima. Da biste pregledali ključ puta koji je spremljen za poslužitelj, pokrenite uređivač registra sustava Windows, na sljedeći način:
-
Kliknite Start, a zatim Pokreni.
-
Upišite regedit, a zatim kliknite u redu.
-
Pomaknite se na ključ HKEY_CLASSES_ROOT \CLSID. CLSIDs za registrirane poslužitelje za automatizaciju u sustavu nalaze se na ovom ključu.
-
Upotrijebite sljedeće vrijednosti ključa CLSID da biste pronašli ključ koji predstavlja aplikaciju sustava Office koju želite automatizirati. Pregledajte ključ LocalServer32 za CLSID ključ za put.
Poslužitelj sustava Office
CLSID ključ
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}
-
Provjerite put da biste bili sigurni da se podudara s stvarnim mjestom datoteke.
Napomena Kratki nazivi puta mogu izgledati ispravno kada nisu točni. Primjerice, Office i Microsoft Internet Explorer (ako su instalirani na zadanim lokacijama) imaju kratki put koji je sličan C:\PROGRA ~ 1 \ MICROS ~X\ (gdje X je broj). Taj se naziv možda isprva neće prikazati kao kratak naziv puta. Da biste utvrdili je li put ispravan, slijedite ove korake:
-
Kliknite Start, a zatim Pokreni.
-
Kopirajte vrijednost iz registra, a zatim zalijepite vrijednost u dijaloški okvir Pokreni . Napomena Prije pokretanja aplikacije uklonite prekidač /Automation .
-
Kliknite U redu.
-
Provjerite funkcionira li aplikacija ispravno. Ako se aplikacija pokrene nakon klika na u redu, poslužitelj je pravilno registriran. Ako se aplikacija ne pokreće nakon klika na u redu, zamijenite vrijednost ključa LocalServer32 pomoću odgovarajućeg puta. Ako možete, upotrijebite kratak naziv puta.
-
-
Testirajte moguću korupciju predloška Normal. dot ili datoteke resursa programa Excel. xlb. Prilikom automatizacije programa Microsoft Word ili Microsoft Excel može doći do problema ako je u programu Word ili u programu Excel. xlb datoteka resursa oštećen. Da biste testirali ove datoteke, pretražite lokalne tvrde diskove za sve instance Normal. dot ili programa Excel. xlb. Napomena Možda ćete pronaći više primjeraka tih datoteka. Postoji jedna kopija svake od ovih datoteka za svaki korisnički profil koji je instaliran u sustavu. Privremeno preimenujte datoteke normal. dot ili datoteke programa Excel. xlb, a zatim ponovno pokrenite test za automatizaciju. Word i Excel stvaraju te datoteke ako ih ne mogu pronaći. Provjerite funkcionira li kod. Ako kod funkcionira kada je stvorena nova datoteka Normal. dot, izbrišite datoteke koje ste preimenovali. Te su datoteke oštećene. Ako kod ne funkcionira, morate vratiti te datoteke na izvorne nazive datoteka da biste spremili prilagođene postavke spremljene u tim datotekama.
-
Pokrenite aplikaciju u odjeljku Administratorski račun. Poslužitelji sustava Office zahtijevaju pristup čitanju/pisanju u registar i na diskovni pogon. Poslužitelji sustava Office možda se neće pravilno učitati ako vaše sadašnje sigurnosne postavke odbiju pristup čitanju/pisanju.
Pregled sustava
Konfiguracija sustava može prouzročiti i probleme prilikom stvaranja COM poslužitelja izvan procesa. Da biste otklonili poteškoće, upotrijebite sljedeće metode u sustavu na kojem se pojavljuje pogreška:
-
Odredite pojavljuje li se problem s bilo kojim poslužiteljem izvan procesa. Ako imate aplikaciju koja koristi određeni COM poslužitelj (primjerice Word), testirajte neki drugi poslužitelj izvan procesa da biste bili sigurni da se problem ne događa u samome COM sloju. Ako na računalu ne možete stvarati izvan procesa COM poslužitelj, ponovno instalirajte OLE sistemske datoteke kao što je opisano u odjeljku "ponovna instalacija sustava Microsoft Office" u ovom članku ili ponovno instalirajte operacijski sustav da biste riješili problem.
-
Pregledajte brojeve verzija za OLE sistemske datoteke koje upravljaju automatizacija. Te su datoteke obično instalirane kao skup. Te se datoteke moraju podudarati s brojevima međuverzija. Nepravilno konfigurirani uslužni program za postavljanje može greškom instalirati datoteke odvojeno. To uzrokuje nepodudaranje datoteka. Da biste izbjegli probleme u automatstvu, pregledajte datoteke da biste bili sigurni da će se datoteke graditi podudarne. Datoteke za automatizaciju nalaze se u direktoriju Windows\System32. Pregledajte sljedeće datoteke.
Naziv datoteke
Verzija
Datum promjene
Asycfilt.dll
10.0.16299.15
Rujan 29, 2017
Ole32.dll
10.0.16299.371
29 Ožujak 2018
Oleaut32.dll
10.0.16299.431
Svibanj 3, 2018
Olepro32.dll
10.0.16299.15
Rujan 29, 2017
Stdole2.tlb
3.0.5014
Rujan 29, 2017
Da biste pregledali verziju datoteke, desnom tipkom miša kliknite datoteku u programu Windows Explorer, a zatim kliknite Svojstva. Primjetite posljednje četiri znamenke verzije datoteke (međubroj) i Datum zadnje izmjene datoteke. Provjerite jesu li te vrijednosti iste za sve datoteke za automatizaciju. Napomena Sljedeće su datoteke za Windows 10 verzije 1709, međuverzija 16299,431. Ovi brojevi i datumi samo su primjeri. Vaše se vrijednosti mogu razlikovati.
-
Pomoću uslužnog programa za konfiguriranje sustava (msconfig. exe) istražite servise i pokretanje sustava za aplikacije drugih proizvođača koje mogu ograničiti pokrenut kod u aplikaciji sustava Office. Dodatne informacije o aplikaciji msconfig. exe potražite u sljedećem članku iz Microsoftove baze znanja:
181966 Pomoćne postavke otklanjanja poteškoća s konfiguracijom sustava Aplikacije za automatizaciju programa Outlook možda neće uspjeti, primjerice, jer koristite antivirusni program koji sadrži značajke "blokator skripti". Napomena Onemogućivanje antivirusnog programa samo privremeno na testnom sustavu koji nije povezan s mrežom. Ako možete i onemogućiti dodatke drugih proizvođača, slijedite ove korake u programu Outlook. Ako ta metoda riješi problem, obratite se proizvođaču antivirusnog proizvođača da biste saznali više o ažuriranju antivirusnog programa.
-
Na izborniku datoteka kliknite mogućnosti, a zatim Dodaci.
-
Kliknite Upravljanje com dodacima, a zatim kliknite Kreni. Napomena Otvorit će se dijaloški okvir COM dodaci .
-
Poništite potvrdni okvir za bilo koji dodatak drugih proizvođača, a zatim kliknite u redu.
-
Ponovno pokrenite Outlook.
-
Ponovna instalacija sustava Office
Ako nijedan od prethodnih postupaka ne riješi problem, uklonite ga, a zatim ponovno instalirajte Office.
Dodatne informacije potražite u sljedećem člankuiz sustava Office:
Preuzimanje i instalacija ili ponovna instalacija sustava Office 365 ili Office 2016 na PC ili Mac
Reference
Dodatne informacije o automatstvu i uzorcima koda sustava Office potražite na sljedećem Microsoftovu web-mjestu: