2009-03-05 5 views
1

J'ai fait un projet VBA basé sur Excel et Access. Lorsque je copiais sur d'autres ordinateurs, certaines méthodes (gauche, droite, etc.) ou des contrôles (ComboBox) étaient parfois désactivés. J'ai dû reconstruire dans cet ordinateur. Mais parfois c'est OK. Pourquoi? Est-ce dû à des problèmes de licence?Pourquoi mon projet VBA échoue-t-il sur d'autres ordinateurs?

+0

Ce doit être les gobelins qui vivent à l'intérieur de la machine ... –

+0

Pas assez d'informations pour permettre à quiconque de vous aider. –

Répondre

1

Pas parce que sous licence. Beaucoup de facteurs pourraient être, mais je pourrais le clouer à: Selon les différences de version Office SP sur plusieurs ordinateurs, il pourrait vous donner des maux de tête. Vérifiez également la version Office Web Components de chacun. Vos options & Add-in sur Office peut vous donner des indices.

+0

Quelle est la connexion des composants Web Office à MS Access? Cela ressemble à un problème de références typique pour moi. –

+0

Aucune connexion directe, mais il semble utiliser OWC dans son application VB. Très probablement, il est apparemment comme son problème rebondit à partir de scénarios clients. – Codex73

2

Vérifiez les références de l'ordinateur défaillant (via l'option de menu outils/références dans l'éditeur VBA). Différentes plates-formes peuvent avoir différents ensembles de DLL installés et vous obtiendrez des erreurs trompeuses d'Excel s'il y a une référence marquée "MISSING".

est discuté Ce in this question

1

Il est important de vérifier la sécurité et les autorisations sur l'ordinateur que vous rencontrez des problèmes sur. Les utilisateurs doivent disposer d'autorisations complètes sur les dossiers frontal et principal. Les macros ne fonctionneront pas si les paramètres de sécurité ne les autorisent pas. Vous pouvez lire:

Self certification and digital signatures

General information on security principals for Office code and macro security

Trusted location defaults for Office 2003

Macro security in Office 2003

Pour la plupart, la liaison tardive résoudra des problèmes avec des références dans VBA, sauf si vous avez un peu inhabituel les références. La plupart des problèmes sont causés par des différences dans les versions de bibliothèque qui peuvent être surmontées avec une liaison tardive. Avec VBA, il est souvent recommandé de développer une liaison précoce, mais de la relâcher avec une liaison tardive. Le principal inconvénient de la liaison tardive est la modification des constantes intégrées aux valeurs (la vitesse n'est plus le problème qu'elle était auparavant.)

+0

La seule exception pour la liaison tardive est si vous utilisez un contrôle intégré, qui ne peut pas être utilisé avec une liaison tardive du tout. C'est l'une des raisons pour lesquelles de nombreux développeurs évitent les contrôles non natifs dans Access. –

2

Il s'agit d'une différence de version/problème de référence manquant. Parfois, il vous donne l'erreur sur la fonction correcte, et parfois sur des fonctions complètement indépendantes.

Si vous déployez sur différentes versions d'Excel, vous pouvez utiliser la liaison tardive au lieu de la liaison anticipée pour résoudre ce problème. Lorsque vous développez vous pouvez utiliser des trucs comme

Dim x As Excel.Application 
x = New Excel.Application 

Mais pour le déploiement, vous pouvez changer à ce qui suit, puis supprimer la référence tout à fait.

Dim x As Object 
x = CreateObject("Excel.Application") 
Questions connexes