Errori VBA migrando da Excel 2007 a Excel 2010

Anonimo
2012-03-05T14:48:32+00:00

Ciao Mauro,

Il problema si ripresenta nel passare da Excel 2007 in ambiente XP a Excel 2010 in ambiente W7-64bit.

[nota del moderatore: thread originale http://answers.microsoft.com/it-it/office/forum/office_2003-excel/object-library-invalid-or-contains-references-to/36988542-e89b-42a3-8798-ea96ba6bd6b0?page=2 ]

Questo il solito errore:

"La libreria degli oggetti non è valida o contiene riferimenti a defiizioni di oggetti che non è possibile trovare."

Verifico l'elenco dei riferimenti VBA e questa sono le liste pre-cambio

  • Visual Basic for Application
  • Microsoft Excel 12.0 Object library
  • OLE Automation
  • Microsoft office 12.0 Object Library
  • Microsoft forms 2.0 Object library
  • Microsoft Windows Common Controls-2.6.0 (SP6)

e post-cambio

  • Visual Basic for Application
  • Microsoft Excel 14.0 Object library
  • OLE Automation
  • Microsoft office 14.0 Object Library
  • Microsoft forms 2.0 Object library
  • Microsoft Windows Common Controls-2.6.0 (SP6)

Evidenza: l'Object Library di Excel 2010 è la 14 non la 12! Ma come risolvo questa differenza.

Ho installato OWC11.exe per la componente web che uso nelle forms e che ora non viene più segnalato come "mancante" (mi avevi già indicato questa componente come "anomalia"...)

Poi ho provato ad aggiungere manualmente i componeti che sicuramente sono utilizzati nel vecchi ambiente (FM20.DLL, stdole2.tld, mscomct2.ocx) col comando in ambiente VBA Strumenti + Riferimenti... + Sfoglia... (dopo averli copiati dal vecchio ambiente in una directory del nuovo ambiente)

Qui addirittura non ho sortito alcun effetto nemmeno sulla lista dei riferimenti attivati (credo che la cosa sia logica, visto che tento di aggingere componenti o che sono già attivi o che sono precedenti a quelli già attivi...). Il debug si pianta subito alla primissima riga di codice del Modulo1.

...e mò!?

Grazie per l'ennesimo aiuto sul tema. Sergiovery

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2012-03-05T16:27:38+00:00

La cosa "strana" è l'errore 0x8002801c restituito da regsvr32 quando lanci il comando, che è tipico di un problema di architettura 32 / 64 bit

da quanto scrivi la modalità che usi è corretta, verifica nuovamente:

  • Il prompt dei comandi lo esegui cliccandoci col tasto destro del mouse e scegliendo "esegui come amministratore"
  • ti posizioni nella cartella in cui è presente il controllo mscomct2.ocx digitando *cd c:\windows\sysWOW64* 

per evitare che i file vengano ricercati nei percorsi memorizzati nella variabile PATH:

  • digiti il comando .\regsvr32  .\wmnetmgr.dll

- digiti il comando .\regsvr32   .\mscomct2.ocx

La risposta è stata utile?

0 commenti Nessun commento

23 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2012-03-02T16:37:48+00:00

    Da una finestra CMD ho lanciato in sequenza questi comandi:

    Regsvr32 /s mscomct2.OCX

    Regsvr32 /s FM20.dll

    Regsvr32 /s stdole2.tlb

    E' questo, quello che chiedi...giusto!?

    (in vero al link che mi ahi proposto diceva di farlo solo per gli OCX...a volte si tende a strafare!)

    Ho quindi rioprovato a lanciare il mio file xlsm...ma ancora non va.

    Peraltro ho commesso un imprecisione nel mio elenco di Riferimenti (ante-post) che qui vado a correggere:

    ANTE (qui l'imprecisione)

    • Visual Basic for Application
    • Microsoft Excel 12.0 Object library
    • OLE Automation
    • Microsoft office 12.0 Object Library
    • Microsoft forms 2.0 Object library
    • Microsoft Windows Common Controls-2.6.0 (SP3)                    <--- qui l'errore; non SP6

    POST (era corretto)

    • Visual Basic for Application
    • Microsoft Excel 14.0 Object library
    • OLE Automation
    • Microsoft office 14.0 Object Library
    • Microsoft forms 2.0 Object library
    • Microsoft Windows Common Controls-2.6.0 (SP6)

    Saluti Sergiovery

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2012-03-02T16:24:44+00:00

    Grazie Mauro per il tuo riscontro.

    Dunque:

    • non avevo installato Visual Basic 6.0 ne nel nuovo ambiente ne nel vecchio (con questo intendo che non avevo installato il tool di sviluppo). Usavo ed uso il VBA di Office (spero di non dire castronate con questa affermazione!).

    Quindi la mia domanda, in seguito a quanto ho capito della tua affermazione, è: come faccio a rendere compatibile il codice VBA che funzionava in XP32 con MSO2007 sulla nuova macchina W7 64bit con MSO2010?

    In riferimenti alla nota sulle licenze: giusta affermazione...non avevo considerato il risvolto licencing. Ma non credo sia un problema. L'OCX era residente nel vecchio sistema che era regolarmente licenziato. Lo stesso dicasi per il nuovo. Siccome il vecchio verrà eliminato, mi trasferirò la licenza necessaria dal vecchio al nuovo ambiente.

    Per il terzo punto (12 e/o 14) avendo programmato in "12" non ritengo di aver commesso l'errore che giustamente segnali come rischio. Nel mio caso il problema è contrario: il nuovo non legge il vecchio (il che ci riporta probabilmente al punto VB 6.0 di cui sopra).

    Ciao Sergiovery.

    Hai provato a registrare i componenti?

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-03-02T15:46:35+00:00

    Grazie Mauro per il tuo riscontro.

    Dunque:

    • non avevo installato Visual Basic 6.0 ne nel nuovo ambiente ne nel vecchio (con questo intendo che non avevo installato il tool di sviluppo). Usavo ed uso il VBA di Office (spero di non dire castronate con questa affermazione!).

    Quindi la mia domanda, in seguito a quanto ho capito della tua affermazione, è: come faccio a rendere compatibile il codice VBA che funzionava in XP32 con MSO2007 sulla nuova macchina W7 64bit con MSO2010?

    In riferimenti alla nota sulle licenze: giusta affermazione...non avevo considerato il risvolto licencing. Ma non credo sia un problema. L'OCX era residente nel vecchio sistema che era regolarmente licenziato. Lo stesso dicasi per il nuovo. Siccome il vecchio verrà eliminato, mi trasferirò la licenza necessaria dal vecchio al nuovo ambiente.

    Per il terzo punto (12 e/o 14) avendo programmato in "12" non ritengo di aver commesso l'errore che giustamente segnali come rischio. Nel mio caso il problema è contrario: il nuovo non legge il vecchio (il che ci riporta probabilmente al punto VB 6.0 di cui sopra).

    Ciao Sergiovery.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2012-03-02T15:21:27+00:00

    Ciao Mauro,

    Il problema si ripresenta nel passare da Excel 2007 in ambiente XP a Excel 2010 in ambiente W7-64bit. Questo il solito errore:

    "La libreria degli oggetti non è valida o contiene riferimenti a defiizioni di oggetti che non è possibile trovare."

    Verifico l'elenco dei riferimenti VBA e questa sono le liste pre-cambio

    • Visual Basic for Application
    • Microsoft Excel 12.0 Object library
    • OLE Automation
    • Microsoft office 12.0 Object Library
    • Microsoft forms 2.0 Object library
    • Microsoft Windows Common Controls-2.6.0 (SP6)

    e post-cambio

    • Visual Basic for Application
    • Microsoft Excel 14.0 Object library
    • OLE Automation
    • Microsoft office 14.0 Object Library
    • Microsoft forms 2.0 Object library
    • Microsoft Windows Common Controls-2.6.0 (SP6)

    Evidenza: l'Object Library di Excel 2010 è la 14 non la 12! Ma come risolvo questa differenza.

    Ho installato OWC11.exe per la componente web che uso nelle forms e che ora non viene più segnalato come "mancante" (mi avevi già indicato questa componente come "anomalia"...)

    Poi ho provato ad aggiungere manualmente i componeti che sicuramente sono utilizzati nel vecchi ambiente (FM20.DLL, stdole2.tld, mscomct2.ocx) col comando in ambiente VBA Strumenti + Riferimenti... + Sfoglia... (dopo averli copiati dal vecchio ambiente in una directory del nuovo ambiente)

    Qui addirittura non ho sortito alcun effetto nemmeno sulla lista dei riferimenti attivati (credo che la cosa sia logica, visto che tento di aggingere componenti o che sono già attivi o che sono precedenti a quelli già attivi...). Il debug si pianta subito alla primissima riga di codice del Modulo1.

    ...e mò!?

    Grazie per l'ennesimo aiuto sul tema. Sergiovery

    Alcune librerie sono proprie di Visual Basic 6.0. Lo hai installato sulla nuova macchina?

    Il semplice copia/incolla di OCX e DLL non risolve il problema, vogliono registrate, vedi qui:

    http://support.microsoft.com/kb/146219/it

    NOTA. Non puoi installare/distribuire librerie/ocx se sul pc ospite non sei in possesso della licenza relativa a quella libreria e/o ocx.

    12/14 sono inunfluenti, verrà caricata la libreria della versione di Excel presente sul pc. Ovviamente il codice vb dovrà tenere conto di eventuali differenze o, meglio ancora, si programma *sempre* per la versione più vecchia, non implementando caratteristiche che si trovano solo nell'ultima versione.

    Per OWC11.exe, immagino che qui avrai già visto:

    http://www.microsoft.com/downloads/it-it/details.aspx?familyid=7287252c-402e-4f72-97a5-e0fd290d4b76&displaylang=it

    La risposta è stata utile?

    0 commenti Nessun commento