web-dev-qa-db-fra.com

Ouvrez un classeur à partir de VBA et désactivez le code Workbook_Open ()?

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.

12
mezamorphic

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
16
pn7a

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
10
Raunak Thomas

Voici un autre moyen d'ouvrir sans la vba 

Start Excel Application > Go to File > Recent >

 enter image description here

_ {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.

7
0m3r

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
0
Daniel Davis