web-dev-qa-db-fra.com

Impossible d'exécuter la macro ... la macro peut ne pas être disponible dans ce classeur

J'essaie d'appeler un sous-marin sur une autre feuille de calcul, mais un message d'erreur d'exécution s'affiche. 

Plus précisément, j'ai deux feuilles de calcul et plusieurs sous-VBA dans ces feuilles de calcul. Dans l'un des projets VBA (par exemple, classeur1.xlsm), j'ai le code suivant:

Sub AnalysisTableMacro()
Workbooks("Python solution macro.xlsm").Activate
Application.Run "Python solution macro.xlsm!.PreparetheTables"
End Sub

Mais j'ai l'erreur suivante. Les macros des deux feuilles de calcul sont activées. Dans les deux feuilles de calcul, les sous-programmes sont dans Module1. 

Impossible d'exécuter la macro 'Workbook.xlsm! PrepareTheTables'. La macro peut ne pas être disponible dans ce classeur ou toutes les macros peuvent être désactivées.

J'ai aussi essayé Application.Run "Python solution macro.xlsm!Module1.PreparetheTables" mais je n'ai pas fonctionné.

Toute aide serait appréciée.

18
Ege Ozlem

Si vous avez un espace dans le nom du classeur, vous devez utiliser des guillemets simples (') autour du nom du fichier. J'ai également supprimé le point final.

Application.Run "'Python solution macro.xlsm'!PreparetheTables"
10
ChipsLetten

Per Microsoft , essayez d'autoriser l'accès par programme au projet Visual Basic:

  1. Cliquez sur le bouton Microsoft Office, puis sur Options Excel.
  2. Cliquez sur Centre de gestion de la confidentialité.
  3. Cliquez sur Paramètres du centre de confiance.
  4. Cliquez sur Paramètres de macro.
  5. Cliquez pour sélectionner la case à cocher Approuver l'accès au modèle d'objet de projet VBA.
  6. Cliquez sur OK pour fermer la boîte de dialogue Options Excel.
  7. Vous devrez peut-être fermer et rouvrir Excel.
5
Ved Rai

Avait le même problème et je 'Compiled VBA Project' qui a identifié une erreur. Après correction et compilation, les macros ont fonctionné.

4
Vignesh

Vous rencontrez également ce problème lorsque vous créez une routine dans un module de classe. 

Lorsque vous essayez d'exécuter le code en externe, vous obtenez cette erreur.
Vous ne pouvez pas non plus assigner de macro à bouton à un membre d'un module de classe. 

Si vous essayez de lancer depuis le code en appuyant sur le bouton de lecture vert, vous verrez également la même erreur. 

Déplacez la routine dans un module standard ou créez-en une nouvelle dans un module standard qui appelle le membre de la classe.

3
Kam

J'ai eu un problème avec cette erreur aussi, s'est avéré que le nom de fichier causait le problème.

Je l'appelais comme ceci: Application.Run "'" & strPath & strFName & "'! UPC.PrintaFew"

La variable strFName contenait une apostrophe qui, bien sûr, a tout gâché. Il m'a fallu des heures pour le comprendre. Mais une fois que l'apostrophe a été retiré du nom de fichier, cela a fonctionné.

1
JovialJohn

Supprimez votre nom de macro et construisez à nouveau .

0
Dhitta Hananda

Je devais supprimer tous les tirets et les traits de soulignement des noms de fichier et des noms de macro, assurez-vous que cette macro était activée et ajoutez-les module nom.macro

C'est ce que j'ai fini avec: Application.Run ("'" & WbName & "'" & "! ModuleName.MacroName")

0
Matt R.

J'ai eu le même problème que OP et j'ai trouvé que c'était dû à une mauvaise orthographe de la déclaration d'options: 

' Comment comment  

Options Explicit  

Sub someMacroMakechart()

dans un sous-module, au lieu de correct;

' Comment comment  

Option Explicit  

Sub someMacroMakechart()
0
Doylet