Condividi tramite

problemi VBA 64 bit

Anonimo
2017-03-15T12:09:45+00:00

Ho installato il nuovo Office 365 business su 3 macchine, una a 32 bit e 2 a 64 bit. Ho un problema con le vecchie routine VBA di EXCEL, compilate a partire dal 1998: le routine girano regolarmente sulla macchina a 32 bit, ma sulle altre si bloccano sistematicamente in corrispondenza di ogni variabile non dichiarata, con il messaggio "impossibile trovare il progetto o la libreria".

Le installazioni sulle tre macchine sono identiche, con le stesse aggiunte e le stesse opzioni; in particolare è sempre disattivata l'opzione "dichiarazione di variabili obbligatoria"; ma di fatto le macchine a 64 bit si comportano come se questa dichiarazione fosse comunque obbligatoria. Anche le finestre "riferimenti" dello stesso progetto VBA appaiono identiche sulle tre macchine.

Inizialmente avevo installato sulle macchine a 64 bit la versione a 64 bit; poi, su suggerimento del servizio di assistenza Microsoft, ho installato su tutte le macchine la versione a 32 bit, ma nulla è cambiato.

E' normale e come posso rimediare ? per me sarebbe estremamente oneroso e rischioso intervenire su centinaia di routine ben collaudate per dichiarare tutte le variabili.

Per completezza di informazione i sistemi operativi installati sono i seguenti:

  • sulla macchina a 32 bit, dove le routine funzionano: Windows 7 professional
  • sulle macchine a 64 bit: rispettivamente Windows 7 home premium e Windows 10 home
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

6 risposte

Ordina per: Più utili
  1. Anonimo
    2017-03-16T19:44:43+00:00

    ciao Ferruccio,

    prova, strumenti riferimenti e vedi se hai qualche libreria con la dicitura manca.

    in quel caso prova a despuntare quel manca e a rilanciare il tutto.

    Se ancora hai problemi visto che si tratta di files generati con versioni di xls un po' vecchiotte  è possibile che ci siano delle incompatibilità tra quelle datate e le nuove di office 365.

    In questo caso prova a creare un file di Excel nuovo importando tutto il codice vba.

    Scusa le pesantezza, ma la prima forma di debugging è la dichiarazione delle variabili obbligatoria e con tutte quelle variabili sono certo che avrai prestato la massima attenzione, ma...probabilmente qualcosa forse ti è sfuggito...o se non ti è sfuggito ora magari in un secondo momento quando avrai bisogno di apportare qualche implementazione è facile che ti sfugga.

    Facci sapere!

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-03-16T18:42:47+00:00

    Ecco quello che succede.

    Ho volutamente tolto la dichiarazione della prima variabile incontrata (primapagina) e avviato la routine "sequenza"

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-03-16T06:43:32+00:00

    ciao Ferruccio,

    [...]

    E poi mi sarei aspettato un messaggio del tipo "variabile non dichiarata"; possibile che il compilatore scambi la variabile per una routine, senza accorgersi del segno "=" che la segue ?

    [...]

    credo che sarebbe maggiormente utile vedere come stai operando nello specifico, la domanda che poni non mi è chiarissima...

    ad esempio :

    questa banale routine stampa il contenuto della variabile senza che l'obbligo della dichiarazione delle variabili sia impostato :

    ma prontamente mostra l'errore nel momento la dichiarazione viene resa obbligatoria :

    prova a mostrare o pubblicare una demo del tuo problema lo testiamo mooolto volentieri.

    Nel corso delle ultime versione di office, VBA è rimasto praticamente lo stesso nessuna variazione.

    L'errore che riscontri è molto strano...

    La dichiarazione non obbligatoria è, a mio avviso, un errore di progettazione....va fatto, e quindi sempre secondo me, sarebbe bene che tu rivedessi le routine che hai sviluppato, almeno quelle maggiormente rilevanti se proprio proprio ne hai tante almeno quelle.

    Facci sapere.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-03-15T19:50:24+00:00

    Grazie; il suggerimento varrà per il futuro, e in parte l'ho già applicato da un po' di tempo; ma devo risolvere il problema per il passato.

    E poi mi sarei aspettato un messaggio del tipo "variabile non dichiarata"; possibile che il compilatore scambi la variabile per una routine, senza accorgersi del segno "=" che la segue ?

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2017-03-15T14:50:18+00:00

    ciao Ferruccio,

    [...]

    E' normale e come posso rimediare ? per me sarebbe estremamente oneroso e rischioso intervenire su centinaia di routine ben collaudate per dichiarare tutte le variabili.

    [...]

    utilizzo molto poco excel ed il suo VBA, ma sono certo che su questo tema interverrà, aiutandoci, il grande Norman.

    Aldilà del problema citato relativo alla dichiarazione delle variabili,  ti consiglio spassionatamente di cambiare approccio e dichiarare sistematicamente tutte le variabili.

    Senza dichiarazione, le variabili vengono dichiarate implicitamente variant e non serve assolutamente che lo siano, perché il dispendio di memoria è superiore.

    Credo inoltre che le performance in termini di esecuzione ne risentano.

    Quindi, passa alla dichiarazione sistematica, oltre che essere buona norma è un ottimo strumento di debugging.

    Per quanto alla scelta 32bit o 64 bit, la seconda è consigliabile solo in rari casi, e MSFT ne sconsiglia l'installazione.

    Se usi Api, ma anche gli OCX ne sono interessati, con la versione a 64bit devi rivedere il codice e, l'uso delle Api che è già complicato di suo diventa ancor più complicato.

    Posso testare Excel 2010 a 64 bit questa sera, e office365 di cui dispongo la versione a 32bit: visto che anche con la 32 bit denunci lo stesso problema dopo avere effettuato un test, ti riporterò i risultati....francamente però non credo di riscontrare lo stesso problema... :-((.

    HTH.

    Ciao, Sandro.

    [ edit ]

    confermo che da me l'option explicit viene correttamente valutato.

    [end edit]

    La risposta è stata utile?

    0 commenti Nessun commento