L’accès par programmation au projet VBA Office est refusé

S’applique à : Produits OfficeMicrosoft Office Excel 2007Microsoft Office PowerPoint 2007

Symptômes


Le code écrit pour automatiser une application Office et manipuler par programme l’environnement Microsoft Visual Basic pour applications (VBA) et le modèle objet peut échouer dans Office à l’aide de l’un des messages d’erreur suivants : Visual Basic ou VBA :
Erreur au moment de l’exécution' 6068 ' : l’accès par programmation au projet Visual Basic n’est pas approuvé
À partir de Microsoft Visual C++, Microsoft Foundation classes (MFC) ou bibliothèque de modèles ActiveX (ATL) :
HRESULT = 0x800A17B4 (-2146822220) "l’accès par programmation au projet Visual Basic n’est pas approuvé"
Le même code fonctionne sans erreur sur les ordinateurs sur lesquels Office 97 et Office 2000.

Cause


Office ajoute une option de sécurité permettant de verrouiller intentionnellement l’accès par programmation au modèle objet VBA à partir de n’importe quel client Automation, sauf si l’utilisateur choisit d’autoriser cet accès. Il s’agit d’un paramètre par utilisateur et par application et refuse l’accès par défaut. Cette option de sécurité rend plus difficile la création de code « auto-répliquant » pour les programmes non autorisés qui peuvent endommager les systèmes des utilisateurs finaux.

Résolution


Pour qu’un client Automation puisse accéder au modèle objet VBA par programme, l’utilisateur qui exécute le code doit accorder explicitement l’accès. Pour activer Access, l’utilisateur doit procéder comme suit.

Office 2003 et Office XP

  1. Ouvrez l’application Office 2003 ou Office XP en question. Dans le menu Outils , cliquez sur macro, puis cliquez sur sécurité pour ouvrir la boîte de dialogue sécurité des macros .
  2. Dans l’onglet sources approuvées , activez la case à cocher approuver l’accès à Visual Basic Project pour activer Access.
  3. Cliquez sur OK pour appliquer le paramètre. Il est possible que vous deviez redémarrer l’application pour que le code s’exécute correctement si vous effectuez une automatisation à partir d’un complément ou d’un modèle COM (Component Object Model).

Office 2007

  1. Ouvrez l’application Microsoft Office System du 2007 en question. Cliquez sur le bouton Microsoft Office, puis sur options de l'application.
  2. Cliquez sur l’onglet Centre de gestion de la confidentialité , puis surparamètres du centrede gestion de la confidentialité.
  3. Cliquez sur l’onglet paramètres des macros , cochez la case Accès approuvé au modèle d’objet du projet VBA , puis cliquez sur OK.
  4. Cliquez sur OK.