J'ouvre des feuilles de calcul à l'aide de VBA et quelques-uns des classeurs contiennent du code qui commence à s'exécuter lorsque Workbook_Open () est appelé.
Comment puis-je ouvrir les classeurs à l'aide de VBA mais arrêter l'exécution automatique du code? Je ne fais qu'ouvrir les classeurs pour examiner les formules de la feuille. Je ne souhaite pas l'exécution de code.
Souhaitez-vous essayer désactiver les événements avant d'ouvrir le classeur dans VBA, puis les réactiver pour le reste du module? Essayez d'utiliser quelque chose comme ça:
Application.EnableEvents = False 'disable Events
workbooks.Open "WORKBOOKPATH" 'open workbook in question
Application.EnableEvents = True 'enable Events
Je ne sais pas pourquoi cela n’a pas été clairement mentionné dans les autres réponses, mais j’ai trouvé Application.AutomationSecurity
à faire exactement ce qui était requis. Fondamentalement
Application.AutomationSecurity = msoAutomationSecurityByUI
'This is the default behavior where each time it would ask me whether I want to enable or disable macros
Application.AutomationSecurity = msoAutomationSecurityForceDisable
'This would disable all macros in newly opened files
Application.AutomationSecurity = msoAutomationSecurityLow
'This would enable all macros in newly opened files
Même après que le code a été exécuté, les paramètres ne reviendront pas au comportement par défaut, vous devez donc le modifier à nouveau. Donc pour cette question
previousSecurity = Application.AutomationSecurity
Application.AutomationSecurity = msoAutomationSecurityForceDisable
' Your code
Application.AutomationSecurity = previousSecurity
Voici un autre moyen d'ouvrir sans la vba
Start Excel Application > Go to File > Recent >
_ {Maintenez la touche Shift et double-cliquez pour ouvrir - _
Cela empêchera le déclenchement de l'événement Workbook_Open
et l'exécution de la macro Auto_Open
.
Ou maintenez la touche Maj enfoncée et double-cliquez pour ouvrir le classeur.
Une combinaison de Application.EnableEvents et d'une application spécifique à un classeur, Application.EnableEvents, fonctionne très bien. Chaque fois que le classeur est référencé (par exemple lors de la copie de cellules), il déclenche de nouveau les événements d'activation. Le classeur doit d'abord quitter, et il est impossible d'y accéder après la fermeture. Essayez ceci:
Dim wb as Workbook
Application.EnableEvents = False
Set wb = workbooks.Open "YOURWORKBOOKPATH"
Application.EnableEvents = True
wb.Application.EnableEvents = False
**Code**
wb.Application.EnableEvents = True
wb.Close