Classeur Excel Ouvert Événement macro n'est pas toujours courir
J'ai un événement "Workbook_Open" macro (et c'est dans ThisWorkbook) qui n'est pas toujours exécuter.
- Si Excel est fermé et que je double-cliquez sur le .xls fichier de l'Explorateur Windows, il fonctionne.
- Si je lance Excel à partir de Démarrer/Programmes (avec pas .fichier xls) et ensuite ouvrir le fichier, il fonctionne.
- Si j'ai déjà ouvert le fichier dans Excel, mais ensuite, fermez le fichier (en laissant Excel ouvert) et de la rouvrir, puis la macro ne s'exécute pas.
J'ai le niveau de sécurité à moyen et j'ai activer les macros à chaque fois qu'il ouvre.
Que dois-je faire pour obtenir la macro à exécuter à chaque fois que je l'ai ouvert, et pas seulement la première fois pour cette Excel session?
(btw, c'est Excel 2003)
Tout ce que je peux vous dire, c'est qu'il fonctionne dans Excel 2010 🙁
Avez-vous un Workbook_BeforeClose événement?
Une fois que vous ouvrez le classeur dans le cas 3, toutes les autres macros de travail?
J'ai couru un test rapide des trois scénarios que vous décrivez (dans excel 2003) et tous les trois exécuter l'événement open. donc il doit y avoir quelque chose d'autre se passe avec votre fichier et ou de l'installation. pls envoyer plus de détails de tout autre code dans votre fichier et de toutes les autres installations, vous mey ont (par exemple tout installé excel addins)
Workbook_BeforeClose: Non, je n'ai pas.
Avez-vous un Workbook_BeforeClose événement?
Une fois que vous ouvrez le classeur dans le cas 3, toutes les autres macros de travail?
J'ai couru un test rapide des trois scénarios que vous décrivez (dans excel 2003) et tous les trois exécuter l'événement open. donc il doit y avoir quelque chose d'autre se passe avec votre fichier et ou de l'installation. pls envoyer plus de détails de tout autre code dans votre fichier et de toutes les autres installations, vous mey ont (par exemple tout installé excel addins)
Workbook_BeforeClose: Non, je n'ai pas.
OriginalL'auteur ScottSM | 2011-03-25
Vous devez vous connecter pour publier un commentaire.
je pensais que c'était la plus convaincante de l'article sur ce problème (qui est un de longue date ne s'explique complètement erratique bug Excel expositions).(lien mort)En bref, dans de nombreux cas, c'est un timing chose due, car le classeur est en train de calculer des trucs quand il s'ouvre et qui est dans la manière de l'événement "Workbook_Open". Pour le tester sur le vôtre, afin de voir si elle de cette situation, c'est d'abord renommer les fonctions définies par l'utilisateur ou des Macros appelé par les cellules de sorte qu'ils ne seront pas appelés et voir si cela change quoi que ce soit.
J'ai juste essayé d'ajouter le code de l'article que vous avez mentionné; ne semble pas aider. 🙁 Et il y a tout un tas d'onglets et de beaucoup de code...dur pour renommer tout...toutes les suggestions sur la façon de démarrer?
Oh -- mais merci beaucoup pour poster le lien de l'article! Bon à savoir que je ne suis pas le seul dans ce!
Je voudrais voir si je pouvais trouver un moyen de désactiver complètement calcul lorsque la feuille de calcul ouverte et voir si cela a aidé. Je ne suis pas sûr de la main gauche la procédure à suivre lorsque le Classeur s'Ouvre, mais peut-être que certains travaux de recherche permettra de trouver un moyen. Vous pourriez être en mesure de copier un Onglet à la fois à un classeur vide, et de voir si tout particulier est à l'origine de l'événement "Workbook_Open" de ne pas tirer. Bien sûr, avec des interrelations entre les feuilles, ce n'est pas toujours si facile.
OriginalL'auteur Lance Roberts
J'ai eu le même problème.
J'ai testé un classeur sur mon ordinateur sans aucun soucis. Après destributing à mes clients m'a dit, que certaines listes déroulantes est restée vide. Ce sont généralement remplis de l'intérieur de la
workbook_open
routine.J'ai essayé différentes choses pour permettre à l'
workbook_open
-Événement - sans succès.Enfin, j'ai trouvé que la désactivation de toutes les Fonctions définis par l'utilisateur (UDF) conduisent à l'exécution correcte de
workbook_open
.Comme mon classeur est ouvert à partir d'un autre fichier, je vais essayer de définir calcul manuel abord, puis exécuter le
workbook_open
manuellement. Cela peut être fait par la définition qu'ilau lieu de
Étrange, que excel n'a pas le temps de lui-même...
OriginalL'auteur DrMarbuse
Une réponse tardive (mieux que rien).
J'ai eu ce problème maintenant à quelques reprises (avec Excel 2010).
La solution qui a toujours travaillé (à ce jour) a été: supprimer la mise en forme conditionnelle, en particulier s'il contient de l'UDF comme conditions. @LanceRoberts a écrit dans un post ci-dessus, il est en fin de compte en raison de l'UDF, les calculs de "substitution" de l'événement Open, mais j'ai trouvé que ceux-ci sont particulièrement nocif s'il est utilisé dans des formats conditionnels.
OriginalL'auteur Rob
Je vivais presque identique comportement, et a constaté que c'est dû à un bug qui se produit si la mise en forme conditionnelle règles sont erroring arrière. Il s'avère que si la mise en forme conditionnelle règles sont basées sur toute l'installation par les macros, et qui provoque la mise en forme conditionnelle à l'erreur, la "Workbook_Open" macro vais même pas tenter de l'exécuter.
Pour tester, faire une copie de votre fichier et de supprimer tous les mise en forme conditionnelle à partir du classeur. Enregistrez et ouvrez de nouveau. Si cela résout votre problème, puis retravailler la mise en forme conditionnelle règles à ne pas dépendre de fonctions/valeurs qui vont être rompu avant l' "Workbook_Open" macro s'exécute.
Il semble y avoir aucun moyen de le faire. Encore une fois, si vous wright vos règles conditionnelles de ne pas dépendre sur ces valeurs, qui sont des macro dépendante (qui peut généralement être fait si vous pensez que le problème, mais est spécifique à chaque cas), vous pouvez obtenir le problème résolu. Supprimer la mise en forme conditionnelle est juste une étape de test pour identifier les règle de mise en forme de la création de la question.
OriginalL'auteur Ira Burton
Quelques suggestions:
Assurez-vous d'avoir le dernier service pack(s).
OriginalL'auteur bvukas
J'ai rencontré le même problème, et je l'éviter en utilisant les paramètres de sécurité.
J'ai utiliser les options des paramètres de confidentialité du centre, puis "paramètres de confidentialité centre" (désolé, mais sa traduction de la version française :-p)
puis "fichiers approuvé" ou quelque chose comme ça.
Et ajouter le fichier contenant le classeur excel.
Et son finalement travaillé par la suite.
Cherché partout et ne jamais trouver la solution.
Espère que ça vous aidera quelqu'un
OriginalL'auteur Flymann
Eu le même problème et je crois que je l'ai. J'ai dû mettre un Workbook_BeforeClose private sub en place qui a enregistré le classeur s'il n'était pas en lecture seule; et un Workbook_BeforeSave qui assurait la Demande.EnableEvents = True. Cela semble permettre le Workbook_Open à feu. Pas sûr à 100% pourquoi mais semble reproductible, y compris dans un nouveau classeur vide.
OriginalL'auteur Steve Fossey
Ce qui se passe lorsqu'un classeur est fermé avec une Application.EnableEvents défini à false, et puis vous ouvrez un autre classeur dans la même instance d'excel ouvert. Pour éviter cela, assurez-vous que tous vos processus, de désactiver les événements, réactiver avant de s'arrêter. Une attention particulière à la "Fin" des commandes, des gestionnaires d'erreur et "exit sub" phrases dans le milieu de votre programme.
OriginalL'auteur Arturo Llano
Quelles sont les causes, c'est que votre autre archive, l'on vous ouverte en premier lieu, avoir une
Workbook_Open
procédure; Excel n'est pas excute une deuxième fois.OriginalL'auteur user8222516
Ce qui m'est arrivé aussi et m'a fallu des heures pour comprendre.
S'avère la aujourd'HUI() fonction dans Excel a été à l'origine du problème.
Une fois supprimé de ma feuille de calcul, tout a fonctionné à nouveau. Très étrange ce bug.
OriginalL'auteur George French
À ajouter à l'Arturo Llano post: Le code suivant a été utilisé pour surveiller l'événement "Workbook_Open", puis exécutez ProcessX lorsqu'un classeur est ouvert.
ProcessX contenait une déclaration de Fin. Le résultat a été qu'il ne fonctionnait que la première fois. La Fin anéanti AppX, donc il n'y a pas de suivi d'événements. Suppression de Fin fixe le problème. (À l'aide de la Fin est une mauvaise pratique de toute façon que ça s'arrête tout, sans aucune sorte de nettoyage ou de cessation d'autres ressources).
'Code: Personnelle.xlsb ThisWorkbook
OriginalL'auteur Five Nine