Impossible d'exécuter la macro ... la macro n'est peut-être pas disponible dans ce classeur
Je suis en train de l'appel d'un sous sur une autre feuille de calcul, mais j'ai eu un message d'erreur exécution.
Précisément, j'ai deux feuilles de calcul et de multiples VBA sous s dans les feuilles de calcul. Dans l'un des Projet VBA (dire 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 eu l'erreur suivante. Les macros sur les deux feuilles de calcul sont activés. Dans les deux feuilles de calcul, les sous-titres sont dans Module1.
Ne peut pas exécuter la macro 'Classeur.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 ne fonctionne pas.
Toute aide serait appréciée.
source d'informationauteur Ege Ozlem
Vous devez vous connecter pour publier un commentaire.
Par Microsoft KBessayez de permettre l'accès par programme au projet Visual Basic:
Si vous avez un espace dans le nom du classeur, vous devez utiliser des guillemets simples (') autour du nom de fichier. J'ai aussi enlevé l'arrêt complet.
Eu le même problème et j'Compilé VBA Project " qui a identifié une erreur. Après correction et de la compilation, les macros travaillé.
Vous aussi rencontré ce problème lors de la création de la routine dans un module de classe.
Lorsque vous essayez d'exécuter le code de l'extérieur, vous obtenez cette erreur.
Vous ne pouvez pas affecter une macro à bouton à un membre d'un module de classe.
Si vous essayez d'exécuter à partir de l'intérieur le code en appuyant sur bouton de lecture vert vous permettra également de voir la même erreur.
Déplacer la routine dans un module normal ou créer une nouvelle routine régulière un module qui appelle le membre de la classe.
Supprimer votre nom de la macro et de construire à nouveau.
J'ai fait cela, et la macro travaillé.
J'ai eu le même problème que l'OP et trouvé était due à des options déclaration étant mal orthographié:
dans un sous-module, au lieu de corriger;
Cette Erreur apparaît lors de l'ouverture d'une macro qui est enregistré pour la dernière fois d'avoir une erreur de syntaxe.
Le Message, bien que s'référence à la macro qui appelle l'erreur de les sous ou de la fonction. Pour résoudre ce problème j'ai l'habitude d'essayer d'exécuter la dernière édition de macros séparément.
La raison la plus probable de cette erreur est que la fonction de sécurité dans Excel VBA qui ne permettrait pas le code VBA pour être exécuté. L'utilisateur doit explicitement donner l'autorisation à l'exécution de macros excel côtés du classeur.
Cette peut ou peut ne pas exiger l'accès par programme au projet Visual Basic.
Ce que résolu cette erreur a été pour moi :-
Permettre l'Édition et Activer le Contenu
Les étapes et les détails
Évolution des paramètres des macros avec programmatique
accès(pas recommandé si l'un des processus ci-dessus fonctionne.
Ce serait donner le code de contrôle pour modifier les éléments dans le VBA
Projet lui-même, y compris les Références et le Code lui-même - Référence)
Les Étapes Ici
Enregistrer sous .xlsm (Classeur Excel Macro-Enabled).
Dans mon cas c'était du au fait d'avoir une procédure publique dans un autre module et d'une salle de procédure dans le module appelant avec le même nom. VBA ne fait pas de distinction entre les deux, et donc a donné l'obtus erreur.
J'ai dû supprimer les tirets et des tirets bas dans les noms de fichiers et les noms de macro, assurez-vous que la macro est activée et ajouter leur nom de module.nom de la macro
C'est ce que j'ai: Demande.Run ("'" & WbName & "'" & "!ModuleName.MacroName")
J'ai eu un problème avec cette erreur ainsi, s'est avéré le nom de fichier a été à l'origine du problème.
J'ai été de l'appeler comme ceci:
Application.Exécuter "'" & strPath & strFName & "'!UPC.PrintaFew"
La variable strFName contient une apostrophe, qui, bien sûr gâché les choses. M'a pris des heures pour comprendre. Mais une fois que l'apostrophe a été supprimé à partir du nom de fichier, il a travaillé.
J'ai eu le même problème et a pris un certain temps à comprendre. Mon objectif était d'appeler du code dans un classeur distinct. J'ai eu la cible sous dans une feuille de code et pas un module. S'avère qu'il semblerait que l'on ne peut pas appeler à distance une sub ou une fonction qui n'est pas dans un module.