INFO: Risoluzione dell'errore 429 generato durante l'automazione di applicazioni di Office

Traduzione articoli Traduzione articoli
Identificativo articolo: 244264 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

Quando si utilizza l'operatore New o CreateObject in Microsoft Visual Basic per creare un'istanza di un'applicazione di Microsoft Office, potrebbe essere visualizzato un messaggio di errore analogo al seguente:
Errore di runtime "'429": il componente ActiveX non pu˛ creare l'oggetto
Questo errore si verifica quando l'oggetto di automazione richiesto non pu˛ essere creato da COM e non Ŕ pertanto disponibile in Visual Basic. L'errore viene in genere rilevato solo su alcuni computer.

In questo articolo vengono forniti alcuni suggerimenti per la rilevazione e la risoluzione di problemi comuni noti come causa dell'errore.

Informazioni

A differenza di alcuni errori generati in Visual Basic, non vi Ŕ una causa specifica dell'errore 429. Il problema si verifica a causa di un errore di configurazione dell'applicazione o del sistema o di un componente mancante o danneggiato. Per individuarne l'esatta causa Ŕ necessario procedere per esclusione, analizzando le varie possibilitÓ. Se l'errore viene rilevato in un computer client, numerosi sono gli elementi da verificare per individuare e risolvere il problema.

Gli elementi illustrati pi¨ avanti forniscono alcuni suggerimenti pratici per la risoluzione di questo errore durante l'utilizzo di applicazioni di Office. Per quanto alcune di queste informazioni potrebbero essere applicate anche a server COM non di Office, tuttavia in questo articolo si presume che l'utente stia tentando di automatizzare Microsoft Office.

Verifica del codice

Il primo elemento da verificare in questi casi Ŕ il codice. Prima di iniziare a risolvere l'errore, Ŕ necessario conoscere il punto in cui l'errore si verifica. Tentare di restringere tale ricerca a una singola riga di codice.

Quando si Ŕ individuato il codice contenente l'errore, provare a effettuare le seguenti operazioni:
  • Verificare che nel codice sia utilizzata la creazione esplicita degli oggetti. Qualsiasi tipo di problema Ŕ pi¨ semplice da individuare se lo si riconduce a una singola azione. Ad esempio, pratiche come le seguenti sono sconsigliate:
    Application.Documents.Add 'DON'T USE THIS!!
    Oppure
    
    Dim oWordApp As New Word.Application 'DON'T USE THIS!!
    '... some other code
    oWordApp.Documents.Add
    Entrambi questi metodi utilizzano la creazione implicita degli oggetti. L?avvio di Microsoft Word non avviene finchÚ la variabile non viene chiamata almeno una volta. PoichÚ la variabile pu˛ essere chiamata in varie parti del programma, potrebbe essere difficoltoso individuare il problema. Inoltre, non Ŕ chiaro se il problema riguarda la creazione dell'oggetto Application o quella dell'oggetto Document.

    Effettuare invece chiamate esplicite per creare ciascun oggetto distintamente:
    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... some other code
    Set oDoc = oWordApp.Documents.Add
    In questo modo il problema sarÓ pi¨ facilmente individuabile e il codice pi¨ leggibile.
  • Quando si crea un'istanza di un'applicazione di Microsoft Office, utilizzare CreateObject anzichÚ New. CreateObject Ŕ maggiormente conforme al processo di creazione utilizzato dalla maggior parte dei client Visual C++ e consente l'eventuale cambiamento dei CLSID del server CLSID tra una versione e l'altra. CreateObject pu˛ essere utilizzato sia con oggetti ad associazione anticipata sia con oggetti ad associazione tardiva.
  • Verificare che la stringa ProgID passata a CreateObject sia corretta e indipendente dalla versione (ad esempio, utilizzare "Excel.Application" anzichÚ "Excel.Application.8"). Nel sistema in cui si verifica l'errore potrebbe essere installata una versione di Microsoft Office precedente o pi¨ recente di quella specificata in ProgID.
  • Per facilitare il debug di applicazioni che non possono essere eseguite nell'IDE, utilizzare il comando Erl per la segnalazione del numero della riga in cui si verifica l'errore. Mediante il seguente codice, ad esempio, si otterrÓ la segnalazione dell'oggetto di automazione che non pu˛ essere creato in Word o in Excel:
    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
    Utilizzare una combinazione di finestre di messaggio e di numeri di riga per tenere traccia dell'errore.
  • Provare a utilizzare l'associazione tardiva (ossia, Dim oWordApp As Object). Gli oggetti ad associazione anticipata richiedono infatti l'utilizzo delle relative interfacce personalizzate per poter essere sottoposti a marshalling tra processi diversi. Se si verifica un problema di marshalling di un'interfaccia personalizzata durante l'esecuzione di CreateObject o New, verrÓ generato un errore 429. Un oggetto ad associazione tardiva utilizza un'interfaccia definita dal sistema (IDispatch) per il cui marshalling non Ŕ necessario in un proxy personalizzato. Provare a utilizzare un oggetto ad associazione tardiva e verificare se si ottengono cambiamenti significativi.

    Se il problema si verifica solo quando l'oggetto Ŕ associato anticipatamente, la causa sarÓ nell'applicazione server e in genere il problema potrÓ essere corretto reinstallando l'applicazione (vedere pi¨ avanti in questo articolo).
  • Se si sta eseguendo l'automazione da ASP o da un componente MTS, utilizzare CreateObject anzichÚ Server.CreateObject(). Utilizzando Server.CreateObject verrÓ creata un'istanza dell'applicazione di Office con l'identitÓ di un pacchetto MTS che Ŕ la causa nota dei problemi riscontrati in Microsoft Office.

Verifica del server di automazione

Le cause pi¨ comuni di un errore di esecuzione di CreateObject o New sono problemi relativi alla stessa applicazione server. In genere, questi problemi riguardano la configurazione o l'installazione dell'applicazione. Di seguito sono illustrati alcuni degli elementi da verificare:
  • Verificare che l'applicazione di Microsoft Office che si intende automatizzare sia installata nel computer locale e che sia possibile avviarla scegliendo Esegui dopo aver fatto clic sul pulsante Start. Se il programma non pu˛ essere avviato manualmente, non sarÓ in grado di funzionare in automazione.
  • Eseguire una nuova registrazione dell'applicazione digitando il percorso del server nella finestra di dialogo Esegui visualizzata scegliendo Esegui dopo aver fatto clic sul pulsante Start, quindi inserire /RegServer alla fine della riga. Scegliere OK. Questo metodo dovrebbe eseguire l'applicazione in modo invisibile all'utente e rieseguirne la registrazione come server COM. Se il problema riguarda una chiave del Registro di sistema mancante, in genere il metodo indicato dovrebbe risolverlo.
  • Controllare la chiave del Registro di sistema LocalServer32 sotto il CLSID dell'applicazione che si intende automatizzare, verificando che il percorso dell'applicazione sia specificato in modo corretto e in formato breve (DOS 8.3). Anche se non Ŕ necessario che un server sia registrato utilizzando un nome di percorso breve, Ŕ noto che i nomi lunghi di percorso contenenti spazi causano problemi su alcuni sistemi (vedere pi¨ avanti in questo articolo).

    Per verificare la chiave del percorso memorizzata per il server, avviare l'editor del Registro di sistema scegliendo Esegui dopo aver fatto clic sul pulsante Start e digitando regedit nella finestra di dialogo Esegui. Selezionare la chiave del Registro di sistema HKEY_CLASSES_ROOT\Clsid. In corrispondenza di questa chiave del Registro di sistema sono specificati i CLSID dei server di automazione registrati nel sistema. Facendo riferimento ai valori indicati pi¨ avanti, individuare la chiave del Registro di sistema che rappresenta l'applicazione di Office che si intende automatizzare e verificare la relativa chiave del Registro di sistema LocalServer32 per il percorso.
       +========================+=========================================+
       | Server di office       | Chiave del Registro di sistema CLSID    |
       +========================+=========================================+
       | Access.Application     | {73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}  |
       +------------------------+-----------------------------------------+
       | Excel.Application      | {00024500-0000-0000-C000-000000000046}  |
       +------------------------+-----------------------------------------+
       | FrontPage.Application  | {04DF1015-7007-11D1-83BC-006097ABE675}  |
       +------------------------+-----------------------------------------+
       | Outlook.Application    | {0006F03A-0000-0000-C000-000000000046}  |
       +------------------------+-----------------------------------------+
       | PowerPoint.Application | {91493441-5A91-11CF-8700-00AA0060263B}  |
       +------------------------+-----------------------------------------+
       | Word.Application       | {000209FF-0000-0000-C000-000000000046}  |
       +------------------------+-----------------------------------------+
    Verificare che il percorso corrisponda alla posizione reale del file. Con i nomi di percorso brevi, infatti, si pu˛ avere l'impressione che il percorso sia corretto anche quando non lo Ŕ. Ad esempio, per Microsoft Office e Microsoft Internet Explorer, se installati nei percorsi predefiniti, sarÓ specificato un percorso analogo a "C:\PROGRA~1\MICROS~X\", dove X Ŕ un numero. Non Ŕ immediatamente evidente che il nome del percorso specificato Ŕ in formato breve.

    ╚ possibile verificare la correttezza del percorso copiando il valore dal Registro di sistema e incollandolo nella finestra di dialogo Esegui, visualizzata scegliendo Esegui dopo aver fatto clic sul pulsante Start. Prima di eseguire l'applicazione, rimuovere l'opzione /Automation. Verificare se l'applicazione si avvia quando si sceglie OK. Se si avvia, significa che il server Ŕ registrato correttamente. In caso contrario, sostituire il valore della chiave del Registro di sistema LocalServer32 con il percorso corretto, utilizzando, se possibile, un nome di percorso breve.
  • Problemi sono stati riscontrati durante l'automazione di Word o di Excel quando il modello Normal.dot di Word o il file di risorse Excel.xlb di Excel sono danneggiati. Per verificare se i file sono danneggiati, cercare tutte le istanze di Normal.dot o *.xlb all'interno dei dischi rigidi locali. Se si esegue Windows 2000, Windows NT o Windows 95/98 con i profili abilitati, potranno trovarsi pi¨ copie di questi file, una per ogni profilo utente presente nel sistema. Rinominare temporaneamente i file Normal.dot o *.xlb e riavviare il test di automazione. I file verranno ricreati automaticamente qualora non vengano trovati. Verificare che il codice funzioni. Se funziona, i file rinominati dovranno essere eliminati perchÚ sono danneggiati. Se il codice non funziona, ripristinare il nome originale dei file in modo che le impostazioni personalizzate salvate nei file non vadano perdute.
  • Se si utilizza un sistema Windows NT, Windows 2000, Windows XP o Windows Server 2003, eseguire l'applicazione accedendo con l'account Administrator. I server di Office devono disporre dell'accesso in lettura/scrittura al Registro di sistema e all'unitÓ disco e potrebbero non essere caricati correttamente qualora le impostazioni di protezione correnti negassero questo privilegio.

Verifica del sistema

La configurazione del sistema pu˛ causare problemi anche durante la creazione di server COM out-of-process. Di seguito sono illustrati alcuni degli elementi di sistema da controllare quando si verifica l'errore:
  • Controllare se il problema si verifica con ogni server out-of-process. Se un'applicazione, ad esempio Word, utilizza esclusivamente uno specifico server COM, eseguire una prova su un server out-of-process differente per assicurarsi che il problema non riguardi espressamente il livello COM. Se nel sistema non Ŕ possibile creare altri server COM out-of-process, per risolvere il problema sarÓ necessario provvedere a una reinstallazione dei file di sistema OLE (vedere di seguito) o dell'intero sistema operativo.
  • Verificare i numeri di versione dei file di sistema OLE che gestiscono l'automazione. Questi file vengono in genere installati come insieme e devono avere numeri di build corrispondenti. Un'utilitÓ di installazione configurata in modo improprio potrebbe erroneamente installare i file separatamente, provocando errori di mancata corrispondenza. Per evitare problemi di automazione, verificare che i numeri di build dei file corrispondano.

    I file di automazione si trovano nella directory Windows\System o Winnt\System32. Di seguito Ŕ fornito l'elenco dei file da verificare:
       +---------------+-------------+----------------+
       | Nome file     |  Versione   | Data modifica  |
       +---------------+-------------+----------------+
       | Asycfilt.dll  |  2.40.4275  | 8 marzo 1999   |
       | Oleaut32.dll  |  2.40.4275  | 8 marzo 1999   |
       | Olepro32.dll  |  5.0.4275   | 8 marzo 1999   |
       | Stdole2.tlb   |  2.40.4275  | 8 marzo 1999   |
       +---------------+-------------+----------------+
    Verificare la versione del file facendo clic con il pulsante destro del mouse sul file in Esplora risorse e scegliendo ProprietÓ dal menu di scelta rapida. I valori pi¨ importanti sono le ultime quattro cifre della versione del file, ossia il numero di build, e la data dell'ultima modifica. Verificare che i valori siano uguali per tutti i file di automazione.

    Si noti che i numeri di versione e le date di modifica indicate sono forniti a solo scopo esemplificativo. I valori reali possono essere differenti. Verificare che vi sia corrispondenza tra i valori reali, non tra quelli reali e i valori elencati in tabella.

    Se i numeri di versione e le date di modifica dei file non corrispondono, Ŕ possibile scaricare un'utilitÓ autoestraente che aggiornerÓ i file di automazione. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
    290887 VBRun60sp6.exe installa i file di runtime di Visual Basic 6.0 SP6
  • In Windows NT 4.0 Ŕ stato riscontrato un problema durante l'avvio dei server di automazione presenti in una cartella il cui nome contiene uno spazio e/o gli stessi 8 caratteri iniziali del nome di un'altra cartella. Ad esempio, un server presente in C:\Programmi\Cartella potrebbe non avviarsi durante una chiamata a CreateObject se nel sistema esiste un'altra cartella denominata C:\Altri programmi\Cartella. Per ulteriori informazioni, vedere il seguente articolo della Microsoft Knowledge Base:Per ulteriori informazioni su questo problema e sulle procedure di risoluzione, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito (il contenuto potrebbe essere in inglese):
    185126 BUG: Impossibile avviare il server COM/OLE in Windows NT 4.0

Reinstallazione di Microsoft Office

Se nessuna delle procedure precedenti consente di risolvere il problema, provare a disinstallare Microsoft Office e a reinstallarlo nuovamente. Microsoft consiglia di disinstallare la versione esistente prima di procedere a una nuova installazione dai dischi di installazione originali.

Per un elenco completo degli elementi di programma da rimuovere, vedere i seguenti articoli della Microsoft Knowledge Base:
219423 OFF2000: Rimozione completa del CD1 di Microsoft Office
158658 OFF97: Rimozione completa di Microsoft Office 97

Riferimenti

Per ulteriori informazioni sulla risoluzione del messaggio di errore 429, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito (il contenuto potrebbe essere in inglese):
240377 HOWTO: Garantire l?installazione corretta di Jet 3.5 (Parte I)
Per informazioni aggiornate ed esempi di codice relativi all'automazione di Microsoft Office, visitare il seguente sito Web del Servizio Supporto Tecnico Clienti Microsoft (informazioni in lingua inglese):
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx

ProprietÓ

Identificativo articolo: 244264 - Ultima modifica: venerdý 29 giugno 2007 - Revisione: 6.1
Le informazioni in questo articolo si applicano a
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft Access 97 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft FrontPage 2002 Standard Edition
  • Microsoft FrontPage 2000 Standard Edition
  • Microsoft Outlook 2002 Standard Edition
  • Microsoft Outlook 2000 Standard Edition
  • Microsoft Outlook 97 Standard Edition
  • Microsoft Outlook 98 Standard Edition
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Word 97 Standard Edition
Chiavi:á
kbinfo kbautomation kbfaq KB244264
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com