2009-02-03 24 views
55

Quindi devo eseguire l'app excel di qualcun altro sul mio PC e sto ricevendo "Impossibile trovare il progetto o la libreria" su funzioni standard come data, formato, hex, mid, ecc."Impossibile trovare il progetto o la libreria" per le funzioni VBA standard

Alcune ricerche indicano che se prefisso queste funzioni con "VBA". come in "VBA.Date" quindi funzionerà correttamente.

Le pagine Web suggeriscono che ha a che fare con i miei riferimenti di progetto sul mio sistema, mentre devono essere ok sul sistema dello sviluppatore. Tratterò questo argomento per un po 'di tempo dagli altri e distribuirò queste applicazioni a molti altri, quindi ho bisogno di capire cosa c'è di sbagliato nella mia configurazione di Excel che devo correggere, o cosa deve essere cambiato nel file xls in modo che possa essere eseguito su una varietà di sistemi. Mi piacerebbe evitare che tutti usino "VBA". come riferimento esplicito, ma se non esiste una soluzione ideale suppongo che sia quello che dovremo fare.

  • Come creare "VBA". implicito nelle mie proprietà del progetto/riferimenti/etc?

-Adam errori

+0

stai sviluppando in una versione di Excel e la distribuzione agli utenti che utilizzano una versione diversa? –

+0

Potrebbe essere il caso - Non so quale versione gli sviluppatori stanno usando. Controllerò. –

+2

http://www.cpearson.com/Excel/MissingReferences.aspx – SmartestVEGA

risposta

51

ho visto su funzioni standard se ci fosse un riferimento a una completamente diversa libreria mancante.

Nell'editor VBA avviare il comando Compile dal menu e quindi controllare la finestra di dialogo Riferimenti per vedere se manca qualcosa e in tal caso provare ad aggiungere queste librerie.

In generale, è buona norma compilare il codice VBA completo e quindi salvare il documento prima della distribuzione.

+3

Sono d'accordo. I riferimenti mancanti saranno chiaramente contrassegnati come MANCANTI. Nel tuo caso, ho il sospetto che si tratti di una versione successiva della libreria di Excel, che può essere risolta con l'associazione in ritardo o selezionando la libreria precedente. Non credo che la compilazione del codice possa aiutare con riferimenti mancanti. – Fionnuala

+0

Hmm. Ricevo una richiesta per una password VBAproject. La trama si infittisce. –

+0

Il tempo di trovare lo sviluppatore origional credo. –

12

Ho riscontrato questo problema esatto e ho trovato, sul computer degli utenti, una delle librerie da cui dipendeva era contrassegnata come "MANCANTE" nella finestra di dialogo dei riferimenti. In quel caso si trattava di una libreria di font per ufficio disponibile nella mia versione di Office 2007, ma non sul desktop del client.

L'errore che si ottiene è un'aringa rossa completa (come sottolineato da Divo).

Fortunatamente non stavo usando nulla dalla libreria, quindi sono stato in grado di rimuoverlo completamente dai riferimenti XLA. Immagino che un'estensione del divo suggerito per le migliori pratiche sarebbe che i test controllassero la XLA su tutte le versioni di Office di destinazione (non una cattiva idea in ogni caso).

7

Nel mio caso, la funzione era AMBIGUOUS come era definita nella libreria VBA (presente nei miei riferimenti) e anche nella libreria oggetti di Microsoft Office (presente anche). Ho rimosso la libreria oggetti di Microsoft Office e voilà! Non c'è bisogno di usare il VBA. prefisso.

27

Ho avuto lo stesso problema. Questo ha funzionato per me:

  • In VB andare in Strumenti » riferimenti
  • Deselezionare la libreria "Controlli di cristallo di analisi comune 1.0". O qualsiasi libreria.
  • Basta lasciare questi 5 riferimenti:
    1. Visual Basic for Applications (Questa è la libreria che definisce il linguaggio VBA.)
    2. Microsoft Excel Object Library (Questo definisce tutti gli elementi di Excel.
    3. Automazione OLE (Specifica i tipi per il collegamento e l'incorporamento di documenti e per l'automazione di altre applicazioni e il "plumbing" del sistema COM che Excel utilizza per comunicare con l'esterno.)
    4. Microsoft Office (Questo definisce cose comuni a tutti i programmi di Office come Comando barre e controlli della barra di comando.)
    5. Microsoft Forms 2.0 Questo è necessario se si utilizza un modulo utente. Questa libreria definisce cose come il modulo utente e i controlli che puoi inserire in un modulo.
  • Quindi salvare.
+0

Per il mio ho dovuto deselezionare "MicroSoft MapPoint 19.0 Object Library" che non era utilizzato nella macro in questione ma utilizzato altrove nel foglio di calcolo. – ELW

+1

Il mio era "Microsoft Windows Common Controls 6.0 (SP4)", che era presente sulla mia macchina Excel 2010 ma su un laptop con Excel 2013. Inoltre, sembra essere in uso (ricevo "Impossibile rimuovere il controllo o riferimento in uso "se lo deseleziono) quindi ho bisogno di scoprire che cosa lo sta usando e di eliminare quello ... – Rich

+0

[Correzione: quanto sopra avrebbe dovuto dire" * non * su un laptop ... "] Risulta che non riesco a rimuovere il riferimento del progetto sulla macchina in cui funziona, sia. Ora ho provato a rimuoverlo in modo programmatico (usando .VBProject.References, passandoci sopra e chiamando Remove on the bad per rimuoverlo) e ricevo "Run-time error '-2147319779 (8002801d)': libreria degli oggetti non registrato "sulla macchina senza la libreria, e ottengo" Errore run-time '57101': Impossibile rimuovere il riferimento predefinito "sulla macchina che * fa * ha la libreria MSComctlLib presente. Grrrr. – Rich

0

Nel mio caso stavo controllando il lavoro svolto sul mio computer dell'ufficio (con Visio installato) a casa (senza Visio). Anche se VBA sembrava essere appeso su semplici funzioni predefinite, il problema era che avevo ancora dei riferimenti alle librerie di Visio.