Riepilogo
Quando si usa l'operatore New o la funzione CreateObject in Microsoft Visual Basic per creare un'istanza di un'applicazione di Microsoft Office, potrebbe essere visualizzato il messaggio di errore seguente:
Errore di runtime '429': il componente ActiveX non riesce a creare l'oggetto
Questo errore si verifica quando il modello COM (Component Object Model) non riesce a creare l'oggetto di automazione richiesto e l'oggetto di automazione non è quindi disponibile in Visual Basic. Questo errore non si verifica in tutti i computer.
Questo articolo descrive come diagnosticare e risolvere i problemi comuni che possono causare l'errore.
Ulteriori informazioni
In Visual Basic esistono diverse cause dell'errore 429. L'errore si verifica se si verifica una delle condizioni seguenti:
-
C'è un errore nell'applicazione.
-
Si è verificato un errore nella configurazione del sistema.
-
C'è un componente mancante.
-
È presente un componente danneggiato.
Per individuare la causa dell'errore, isolare il problema. Se viene visualizzato il messaggio di errore "429" in un computer client, usare le informazioni seguenti per isolare e risolvere l'errore nelle applicazioni di Microsoft Office.
Nota Alcune delle informazioni seguenti possono essere valide anche per i server COM non Office. Tuttavia, questo articolo presuppone che si voglia automatizzare le applicazioni di Office.
Esaminare il codice
Prima di risolvere l'errore, prova a isolare una singola riga di codice che potrebbe causare il problema.
Se si scopre che il problema può essere causato da una singola riga di codice, completare queste procedure:
-
Assicurarsi che il codice usi la creazione esplicita di oggetti.
I problemi sono più facili da identificare se sono limitati a una singola azione. Ad esempio, cercare la creazione implicita di oggetti usata come una delle seguenti.
Codice esempio 1Application.Documents.Add 'DON'T USE THIS!!
Codice esempio 2
Dim oWordApp As New Word.Application 'DON'T USE THIS!! '... some other code oWordApp.Documents.Add
Entrambi questi esempi di codice usano la creazione implicita di oggetti. Microsoft Office Word 2003 non viene avviato finché la variabile non viene chiamata almeno una volta. Poiché la variabile può essere chiamata in diverse parti del programma, il problema può essere difficile da individuare. Può essere difficile verificare che il problema sia causato quando viene creato l'oggetto Application o quando viene creato l'oggetto Document .
È invece possibile effettuare chiamate esplicite per creare ogni oggetto separatamente, come indicato di seguito.Dim oWordApp As Word.Application Dim oDoc As Word.Document Set oWordApp = CreateObject("Word.Application") '... some other code Set oDoc = oWordApp.Documents.Add
Quando si effettua una chiamata esplicita per creare ogni oggetto separatamente, il problema è più facile da isolare. Questo può anche rendere il codice più facile da leggere.
-
Usare la funzione CreateObject invece dell'operatore New quando si crea un'istanza di un'applicazione di Office.
La funzione CreateObject esegue il mapping strettamente del processo di creazione usato dalla maggior parte dei client Microsoft Visual C++. La funzione CreateObject consente inoltre di modificare l'ID CLS del server tra le versioni. È possibile usare la funzione CreateObject con oggetti ad associazione anticipata e con oggetti ad associazione tardiva. -
Verificare che la stringa "ProgID" passata a
CreateObject sia corretta e quindi verificare che la stringa "ProgID" sia indipendente dalla versione. Ad esempio, usare la stringa "Excel.Application" invece della stringa "Excel.Application.8". Il sistema che non riesce potrebbe avere una versione precedente di Microsoft Office o una versione più recente di Microsoft Office rispetto alla versione specificata nella stringa "ProgID". -
Utilizzare il comando Erl per segnalare il numero di riga della riga di codice che non ha esito positivo. In questo modo è possibile eseguire il debug di applicazioni che non possono essere eseguite nell'IDE. Il codice seguente indica quale oggetto di automazione non può essere creato (Microsoft Word o 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
Usare la funzione MsgBox e il numero di riga per tenere traccia dell'errore.
-
Usare l'associazione tardiva come indicato di seguito:
Dim oWordApp As Object
Gli oggetti associati anticipatamente richiedono il marshalling delle interfacce personalizzate oltre i limiti del processo. Se non è possibile eseguire il marshalling dell'interfaccia personalizzata durante CreateObjecto new, viene visualizzato il messaggio di errore "429". Un oggetto con associazione tardiva utilizza l'interfaccia definita dal sistema IDispatch che non richiede il marshalling di un proxy personalizzato. Usare un oggetto con associazione tardiva per verificare che questa procedura funzioni correttamente.
Se il problema si verifica solo quando l'oggetto è ad associazione anticipata, il problema è nell'applicazione server. In genere, è possibile reinstallare l'applicazione come descritto nella sezione "Esaminare il server di automazione" di questo articolo per risolvere il problema.
Esaminare il server di automazione
Il motivo più comune per cui si verifica un errore quando si usa CreateObject o New è un problema che interessa l'applicazione server. In genere, la configurazione dell'applicazione o la configurazione dell'applicazione causa il problema. Per risolvere i problemi, usa i metodi seguenti:
-
Verificare che l'applicazione di Office da automatizzare sia installata nel computer locale. Assicurarsi di poter eseguire l'applicazione. A questo scopo, fare clic sul pulsante Start, scegliere
Esegui e quindi provare a eseguire l'applicazione. Se non è possibile eseguire l'applicazione manualmente, l'applicazione non funzionerà tramite automazione. -
Registrare nuovamente l'applicazione nel modo seguente:
-
Fare clic sul pulsante Start, quindi scegliere Esegui.
-
Nella finestra di dialogo Esegui digitare il percorso del server e quindi aggiungere /RegServer alla fine della riga.
-
Scegliere OK.
L'applicazione viene eseguita automaticamente. L'applicazione viene nuovamente registrata come server COM.
Se il problema si verifica perché manca una chiave del Registro di sistema, questi passaggi consentono in genere di risolvere il problema.
-
-
Esaminare la chiave LocalServer32 in CLSID per l'applicazione da automatizzare. Verificare che la chiave LocalServer32 punti al percorso corretto per l'applicazione. Verificare che il nome del percorso sia in formato percorso breve (DOS 8.3). Non è necessario registrare un server utilizzando un nome di percorso breve. Tuttavia, i nomi dei percorsi lunghi che includono spazi incorporati possono causare problemi in alcuni sistemi.
Per esaminare la chiave di percorso archiviata per il server, avviare l'Editor del Registro di sistema di Windows nel modo seguente:-
Fare clic sul pulsante Start, quindi scegliere Esegui.
-
Digitare regedit e quindi fare clic su OK.
-
Spostarsi sul tasto HKEY_CLASSES_ROOT\CLSID.
I CLSID per i server di automazione registrati nel sistema si trovano sotto questa chiave. -
Usare i valori seguenti della chiave CLSID per trovare la chiave che rappresenta l'applicazione di Office da automatizzare. Esaminare la chiave LocalServer32 della chiave CLSID per il percorso.
Office Server
Tasto 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}
-
Controllare il percorso per assicurarsi che corrisponda al percorso effettivo del file.
Note I nomi dei percorsi brevi possono sembrare corretti quando non sono corretti. Ad esempio, sia Office che Microsoft Internet Explorer (se installati nei percorsi predefiniti) hanno un percorso breve simile a C:\PROGRA~1\MICROS~X\ (dove
X è un numero). Questo nome potrebbe inizialmente non essere un nome di percorso breve.
Per determinare se il percorso è corretto, procedere come segue:-
Fare clic sul pulsante Start, quindi scegliere Esegui.
-
Copiare il valore dal Registro di sistema e quindi incollarlo nella finestra di dialogo Esegui .
Nota Rimuovere l'opzione /automation prima di eseguire l'applicazione. -
Scegliere OK.
-
Verificare che l'applicazione venga eseguita correttamente.
Se l'applicazione viene eseguita dopo aver fatto clic su OK, il server viene registrato correttamente. Se l'applicazione non viene eseguita dopo aver fatto clic su OK, sostituire il valore della chiave LocalServer32 con il percorso corretto. Usare un nome percorso breve, se possibile.
-
-
Verificare il possibile danneggiamento del modello Normal.dot o del file di risorse Excel.xlb. Quando si automatizza Microsoft Word o Microsoft Excel se il modello Normal.dot in Word o il file di risorse Excel.xlb in Excel è danneggiato, possono verificarsi problemi. Per testare questi file, cercare tutte le istanze di Normal.dot o di Excel.xlb nei dischi rigidi locali.
Nota È possibile che vengano trovate più copie di questi file. È presente una copia di ognuno di questi file per ogni profilo utente installato nel sistema.
Rinominare temporaneamente i file Normal.dot o excel.xlb e quindi eseguire di nuovo il test di automazione. Word ed Excel creano entrambi questi file se non riescono a trovarli. Verifica che il codice funzioni. Se il codice funziona quando viene creato un nuovo file Normal.dot, eliminare i file rinominati. Questi file sono danneggiati. Se il codice non funziona, è necessario ripristinare i nomi file originali per salvare le impostazioni personalizzate salvate in questi file. -
Eseguire l'applicazione con l'account Administrator. I server di Office richiedono l'accesso in lettura/scrittura al Registro di sistema e all'unità disco. I server di Office potrebbero non caricarsi correttamente se le impostazioni di sicurezza correnti non consentono l'accesso in lettura/scrittura.
Esaminare il sistema
La configurazione di sistema può anche causare problemi per la creazione di server COM fuori processo. Per risolvere il problema, utilizza i metodi seguenti nel sistema in cui si verifica l'errore:
-
Determinare se il problema si verifica con qualsiasi server fuori processo. Se si dispone di un'applicazione che usa un particolare server COM, ad esempio Word, testare un server fuori processo diverso per assicurarsi che il problema non si verifichi nel livello COM stesso. Se non è possibile creare un server COM fuori processo nel computer, reinstallare i file di sistema OLE come descritto nella sezione "Reinstallazione di Microsoft Office" di questo articolo oppure reinstallare il sistema operativo per risolvere il problema.
-
Esaminare i numeri di versione per i file di sistema OLE che gestiscono l'automazione. Questi file vengono in genere installati come set. Questi file devono corrispondere ai numeri di build. Un'utilità di installazione configurata in modo errato può installare per errore i file separatamente. Ciò causa la mancata corrispondenza dei file. Per evitare problemi nell'automazione, esaminare i file per assicurarsi che le build di file siano corrispondenti.
I file di automazione si trovano nella directory Windows\System32. Esaminare i file seguenti.Nome file
Versione
Data di modifica
Asycfilt.dll
10.0.16299.15
29 settembre 2017
Ole32.dll
10.0.16299.371
29 marzo 2018
Oleaut32.dll
10.0.16299.431
3 maggio 2018
Olepro32.dll
10.0.16299.15
29 settembre 2017
Stdole2.tlb
3.0.5014
29 settembre 2017
Per esaminare la versione del file, fare clic con il pulsante destro del mouse sul file in Esplora risorse e quindi scegliere Proprietà. Si noti le ultime quattro cifre della versione del file (numero di build) e la data dell'ultima modifica del file. Assicurarsi che questi valori siano uguali per tutti i file di automazione.
Nota I file seguenti riguardano Windows 10 versione 1709, build 16299.431. Questi numeri e date sono solo esempi. I valori potrebbero essere diversi. -
Usare l'utilità Configurazione di sistema (Msconfig.exe) per esaminare i servizi e l'avvio del sistema per le applicazioni di terze parti che potrebbero limitare l'esecuzione di codice nell'applicazione
di Office Nota Disabilitare il programma antivirus solo temporaneamente in un sistema di test non connesso alla rete.
In alternativa, seguire questa procedura in Outlook per disabilitare i componenti aggiuntivi di terze parti:
Se questo metodo consente di risolvere il problema, contattare il fornitore dell'antivirus di terze parti per altre informazioni su un aggiornamento del programma antivirus.-
Scegliere Opzioni dal menu File e quindi fare clic su Componenti aggiuntivi.
-
Fare clic su Gestisci componenti aggiuntivi COM e quindi su Vai.
Nota Si apre la finestra di dialogo Componenti aggiuntivi COM. -
Deselezionare la casella di controllo relativa a un componente aggiuntivo di terze parti e quindi fare clic su OK.
-
Riavviare Outlook.
-
Reinstallare Office
Se nessuna delle procedure precedenti consente di risolvere il problema, rimuovere e reinstallare Office.
Per altre informazioni, vedere l'articolo di Office seguente:
Scaricare e installare o reinstallare Office 365 o Office 2016 in un PC o Mac
Riferimenti
Per altre informazioni sull'automazione di Office e sugli esempi di codice, visitare il seguente sito Web Microsoft: