U ontvangt runtimefout 429 wanneer u Office-toepassingen automatiseert

Van toepassing: Office 2016Office 2013

Samenvatting


Wanneer u de nieuwe operator of de functie CreateObject in Microsoft Visual Basic gebruikt om een exemplaar van een Microsoft Office-toepassing te maken, wordt mogelijk het volgende foutbericht weergegeven:
Runtimefout ' 429 ': ActiveX-onderdeel kan geen object maken
Deze fout treedt op wanneer het component object model (COM) het aangevraagde automatiserings object niet kan maken, en het automatiserings object daarom niet beschikbaar is voor Visual Basic. Deze fout doet zich niet voor op alle computers.In dit artikel wordt uitgelegd hoe u veelvoorkomende problemen met deze fout kunt vaststellen en oplossen.

Meer informatie


Visual Basic bevat diverse oorzaken van fout 429. De fout treedt op als een van de volgende voorwaarden van toepassing is: 
  • De toepassing bevat een fout.
  • De systeemconfiguratie bevat een fout.
  • Er ontbreekt een onderdeel.
  • Er is een beschadigd onderdeel.
Isoleer het probleem om de oorzaak van de fout op te sporen. Als u het foutbericht ' 429 ' ontvangt op een clientcomputer, kunt u de volgende informatie gebruiken om de fout in Microsoft Office-toepassingen op te sporen en op te lossen.Opmerking Enkele van de volgende informatie kan ook van toepassing zijn op niet-Office-COM-servers. In dit artikel wordt ervan uitgegaan dat u Office-toepassingen wilt automatiseren.

De code bekijken

Voordat u de fout oplost, isoleert u een enkele regel code die het probleem mogelijk veroorzaakt.Voer de volgende stappen uit als u ontdekt dat één regel met code het probleem kan veroorzaken: 
  • Zorg ervoor dat de code expliciet objecten maken gebruikt. Problemen zijn gemakkelijker te identificeren als ze tot één actie worden beperkt. U kunt bijvoorbeeld het impliciet maken van objecten maken die wordt gebruikt als een van de volgende handelingen. Code voorbeeld 1
    Application.Documents.Add 'DON'T USE THIS!!
    Code voorbeeld 2
    Dim oWordApp As New Word.Application 'DON'T USE THIS!!'... some other codeoWordApp.Documents.Add
    Voor beide codevoorbeelden wordt impliciet maken van objecten gebruikt. Microsoft Office Word 2003 begint niet totdat de variabele minstens één keer wordt aangeroepen. Aangezien de variabele in verschillende delen van het programma kan worden aangeroepen, is het probleem mogelijk moeilijk te vinden. Het kan moeilijk zijn om te controleren of het probleem wordt veroorzaakt wanneer het Application -object wordt gemaakt of wanneer het document object wordt gemaakt. In plaats daarvan kunt u expliciete oproepen maken om elk object afzonderlijk te maken, als volgt:
    Dim oWordApp As Word.ApplicationDim oDoc As Word.DocumentSet oWordApp = CreateObject("Word.Application")'... some other codeSet oDoc = oWordApp.Documents.Add
    Wanneer u expliciete oproepen maakt om elk object afzonderlijk te maken, kunt u het probleem eenvoudiger identificeren. Dit kan de code ook makkelijker leesbaar maken.
  • Gebruik de functie CreateObject in plaats van de nieuwe operator wanneer u een exemplaar van een Office-toepassing maakt. Met de functie CreateObject wordt het maken van het proces dat de meeste Microsoft Visual C++-clients gebruikt, nauwkeurig toegewezen. Met de functie CreateObjectworden ook wijzigingen in de CLSID van de server tussen versies toegestaan. U kunt de functie CreateObjectmet behulp van objecten die aan de eerdere en de late-afhankelijke objecten gebruiken.
  • Controleer of de tekenreeks ' ProgID ' is doorgegeven aan CreateObject is juist en u controleert vervolgens of de tekenreeks ' ProgID ' een versie onafhankelijk is. Gebruik bijvoorbeeld de tekenreeks "Excel. Application" in plaats van de tekenreeks "Excel. Application. 8" te gebruiken. Het systeem dat mislukt mogelijk heeft een oudere versie van Microsoft Office of een nieuwere versie van Microsoft Office dan de versie die u hebt opgegeven in de tekenreeks ' ProgID '.
  • Met de opdracht Erl kunt u het regelnummer van de regel code rapporteren die niet lukt. Hierdoor kunt u fouten in toepassingen die niet kunnen worden uitgevoerd op de IDE, oplossen. Met de volgende code wordt aangegeven welk automatiserings object niet kan worden gemaakt (Microsoft Word of 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
    Gebruik de functie MsgBox en het regelnummer om de fout bij te houden.
  • Gebruik de volgende koppeling:
    Dim oWordApp As Object
    Voor eerdere afhankelijke objecten moeten hun aangepaste interfaces worden gemarshald tussen procesgrenzen. Als de aangepaste interface niet kan worden gemarshald tijdens CreateObject of tijdens een nieuwe, wordt het foutbericht ' 429 ' weergegeven. Een te late afhankelijke object gebruikt de door IDispatch gedefinieerde interface waarvoor geen aangepaste proxy voor de gemarshalde site is vereist. Gebruik een te late afhankelijke object om te controleren of deze procedure correct werkt. Als het probleem zich alleen voordoet wanneer het object vroeg afhankelijk is, bevindt het probleem zich in de servertoepassing. Meestal kunt u de toepassing opnieuw installeren, zoals wordt beschreven in de sectie de automatiserings server bekijken van dit artikel om dit probleem te verhelpen.

De automatiseringsserver bekijken

De meest voorkomende reden waarom een fout optreedt wanneer u CreateObject of Nieuw gebruikt, is een probleem dat van invloed is op de servertoepassing. Meestal leidt de configuratie van de toepassing of het instellen van de toepassing tot het probleem. Gebruik de volgende methoden om problemen op te lossen:

  • Zorg dat de Office-toepassing die u wilt automatiseren, op de lokale computer is geïnstalleerd. Zorg dat u de toepassing kunt uitvoeren. Als u dit wilt doen, klikt u op Starten klikt u op Voer dit uiten probeer de toepassing uit te voeren. Als u de toepassing niet handmatig kunt uitvoeren, werkt de toepassing niet via automatisering.
  • Registreer de toepassing als volgt opnieuw:  
    1. Klik op Start en vervolgens op Uitvoeren.
    2. Typ in het dialoogvenster uitvoeren het pad van de server en voeg tot aan het einde van de regel /RegServer toe.
    3. Klik op OK. De toepassing wordt op de achtergrond uitgevoerd. De toepassing wordt opnieuw geregistreerd als een COM-server.
    Als het probleem optreedt vanwege een ontbrekende registersleutel, wordt dit meestal verholpen door deze stappen uit te voeren.
  • Onderzoek de sleutel LocalServer32 onder de CLSID voor de toepassing die u wilt automatiseren. Zorg ervoor dat de sleutel LocalServer32 naar de juiste locatie voor de toepassing verwijst. Zorg ervoor dat de naam van het pad in een korte pad indeling (DOS 8,3) staat. U hoeft geen server te registreren met een korte padnaam. Lang padnamen met ingesloten spaties kunnen echter problemen veroorzaken op sommige systemen. Als u het pad wilt bekijken dat is opgeslagen voor de server, start u de Windows Registry-editor als volgt:  
    1. Klik op Start en vervolgens op Uitvoeren.
    2. Typ regediten klik vervolgens op OK.
    3. Ga naar de HKEY_CLASSES_ROOT sleutel \CLSID. De CLSID'S voor de geregistreerde automatiseringsservers in het systeem zijn onder deze sleutel.
    4. Gebruik de volgende waarden van de CLSID-sleutel om de code te vinden voor de Office-toepassing die u wilt automatiseren. Kijk met de sleutel LocalServer32 van de CLSID-toets voor het pad.  
      Office Server CLSID-toets
      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. Controleer het pad en zorg ervoor dat het overeenkomt met de daadwerkelijke locatie van het bestand.
    Opmerking Namen van korte padnamen lijken correct wanneer ze niet kloppen. Zowel Office als Microsoft Internet Explorer (als deze zijn geïnstalleerd op de standaardlocatie), hebben bijvoorbeeld een kort pad dat vergelijkbaar is met C:\PROGRA ~ 1 \ MICROsoft ~X\ (waarbij X een getal is). De naam van een korte padnaam wordt mogelijk niet in eerste instantie weergegeven. Ga als volgt te werk om te bepalen of het pad klopt:  
    1. Klik op Start en vervolgens op Uitvoeren.
    2. Kopieer de waarde uit het register en plak de waarde vervolgens in het dialoogvenster uitvoeren . Opmerking Verwijder de schakeloptie /Automation voordat u de toepassing uitvoert.
    3. Klik op OK.
    4. Controleer of de toepassing correct wordt uitgevoerd. Als de toepassing wordt uitgevoerd nadat u op OKhebt geklikt, is de server correct geregistreerd. Als de toepassing niet wordt uitgevoerd nadat u op OKhebt geklikt, vervangt u de waarde van de toets LocalServer32 door het juiste pad. Gebruik indien mogelijk een korte padnaam.
  • Test de mogelijke beschadiging van de sjabloon Normal. dot of van het Excel. xlb-bronbestand. Er kunnen zich problemen voordoen wanneer u Microsoft Word of Microsoft Excel automatiseert als de sjabloon Normal. dot in Word of het Excel. xlb-bronbestand in Excel is beschadigd. Als u deze bestanden wilt testen, zoekt u de lokale vaste schijven voor alle exemplaren van Normal. dot of van Excel. xlb. Opmerking U kunt meerdere kopieën van deze bestanden vinden. Er is één kopie van elk van deze bestanden voor elk gebruikersprofiel dat in het systeem is geïnstalleerd. Wijzig tijdelijk de naam van de Normal. dot-bestanden of de bestanden van Excel. xlb en voer vervolgens uw automatiserings test opnieuw uit. In Word en Excel worden deze bestanden gemaakt als ze deze niet kunnen vinden. Controleer of de code werkt. Als de programmacode werkt wanneer u een nieuw bestand Normal. dot maakt, verwijdert u de bestanden die u hebt gewijzigd. Deze bestanden zijn beschadigd. Als de code niet werkt, moet u deze bestanden terugzetten naar de oorspronkelijke bestandsnamen om aangepaste instellingen op te slaan die in deze bestanden zijn opgeslagen.
  • Voer de toepassing uit onder het beheerdersaccount. Voor Office-servers is lees-en schrijftoegang vereist voor het register en het schijfstation. Office-servers worden mogelijk niet correct geladen als de huidige beveiligingsinstellingen Lees-en schrijftoegang weigeren.

Het systeem bekijken

Systeemconfiguratie kan ook problemen veroorzaken voor het maken van out-of-process COM-servers. U kunt dit probleem oplossen door de volgende methoden te gebruiken op het systeem waarop de fout optreedt:

  • Controleer of het probleem optreedt met een out-of-process-server. Als u een toepassing hebt die gebruikmaakt van een bepaalde COM-server (zoals Word), test u een andere out-of-process-server om er zeker van te zijn dat het probleem zich niet voordoet in de COM-laag zelf. Als u geen out-process COM-server kunt maken op de computer, installeert u de OLE-systeembestanden zoals wordt beschreven in de sectie Microsoft Office opnieuw installeren van dit artikel of installeert u het besturingssysteem opnieuw om het probleem op te lossen.
  • Bekijk de versienummers van de OLE-systeembestanden waarmee automatisering wordt beheerd. Deze bestanden worden meestal als een set geïnstalleerd. Deze bestanden moeten de buildnummers van de bestanden overeenkomen. Het hulpprogramma voor een onjuiste configuratie van Setup kan de bestanden per ongeluk installeren. Hierdoor worden de bestanden niet meer gevonden. Om problemen met automatisering te voorkomen, controleert u de bestanden om ervoor te zorgen dat de bestandsversies worden vergeleken. De automatiseringsbestanden bevinden zich in de map Windows\System32. Bekijk de volgende bestanden.  
    Bestandsnaam Versie Gewijzigd op
    Asycfilt.dll 10.0.16299.15 29 september 2017
    Ole32.dll 10.0.16299.371 Woensdag 29 maart 2018
    Oleaut32.dll 10.0.16299.431 3 mei 2018
    Olepro32.dll 10.0.16299.15 29 september 2017
    Stdole2.tlb 3.0.5014 29 september 2017
    Als u de bestandsversie wilt controleren, klikt u met de rechtermuisknop op het bestand in Windows Verkenner en klikt u vervolgens op Eigenschappen. Let op de laatste vier cijfers van de bestandsversie (het buildnummer) en de datum waarop het bestand het laatst is gewijzigd. Zorg ervoor dat deze waarden gelijk zijn voor alle automatiseringsbestanden. Opmerking De volgende bestanden zijn voor Windows 10 versie 1709, build 16299,431. Deze getallen en datums zijn alleen voorbeelden. De waarden kunnen afwijken.  
  • Gebruik het hulpprogramma voor systeemconfiguratie (Msconfig. exe) om de services te controleren en het opstarten van het systeem voor toepassingen van derden die mogelijk de uitvoering van code in de Office-toepassing beperken. Zie het volgende artikel in Microsoft Knowledge Base voor meer informatie over Msconfig. exe:
    181966 Geavanceerde instellingen voor probleemoplossing voor hulpprogramma voor systeemconfiguratie
    Outlook Automation-toepassingen kunnen bijvoorbeeld mislukken omdat u een antivirusprogramma met de functies voor scriptblokkering uitvoert. Opmerking Schakel het antivirusprogramma alleen tijdelijk uit op een testsysteem dat niet is verbonden met het netwerk. U kunt ook de volgende stappen in Outlook volgen om invoegtoepassingen van derden uit te schakelen: Als dit probleem wordt opgelost door deze methode, neemt u contact op met de leverancier van de antivirussoftware voor meer informatie over een update van het antivirusprogramma.  
    1. Klik in het menu bestand op Optiesen klik vervolgens op invoegtoepassingen.
    2. Selecteer COM-invoegtoepassingen beherenen klik vervolgens op Start. Opmerking Het dialoogvenster COM-invoegtoepassingen wordt geopend.
    3. Schakel het selectievakje voor een invoegtoepassing van derden uit en klik op OK.
    4. Start Outlook opnieuw.

Office opnieuw installeren

Als het probleem niet is verholpen nadat u de bovenstaande stappen hebt uitgevoerd, verwijdert u Office en installeert u Office opnieuw.

Zie het volgende artikelvan Office voor meer informatie:

Verwijzingen


Ga naar de volgende Microsoft-website voor meer informatie over Office Automation en code samples: