2017-10-18 5 views
0

Je travaille sur quelques macros VBA dans Excel pour un projet. Est-il possible de s'assurer que les macros VBA ne se lancent pas à partir d'autres classeurs Excel lorsque vous les ouvrez à l'aide d'une macro?Désactivation de macros à partir d'autres feuilles Excel

Par exemple, disons que j'ai une macro dans un classeur pour ouvrir un autre fichier Excel:

Sheets("Sheet1").Select 
PathName = Range("D3").Value 
Filename = Range("D4").Value 
TabName = Range("D5").Value 
ControlFile = ActiveWorkbook.Name 
Workbooks.Open Filename:=PathName &; Filename 

Ce que j'ai fait habituellement est inclure un Application.EnableEvents = False au sous-programme pour faire en sorte que je ne suis pas code de déclenchement lors de l'ouverture des autres classeurs. C'est aussi la méthodologie suggérée par ce précédent SO post.

Mais deux questions viennent à l'esprit:

  1. Est-ce "sûr"? Existe-t-il d'autres façons pour les utilisateurs d'écrire leurs propres macros qui s'exécutent sur mon application active même si je désactive les événements?

  2. Existe-t-il d'autres solutions de contournement autres que la désactivation complète des événements? Cela semble quelque peu limitant et presque "jeter le bébé avec l'eau du bain".

+0

utiliser SQL pour obtenir des données de la feuille de calcul – jsotola

Répondre

1

Cela semble ouvrir le fichier sans les macros et il est en lecture seule. Lors du test, je ne peux même pas voir le module de macro dans l'éditeur VBA pour le fichier ouvert ..

Application.AutomationSecurity = msoAutomationSecurityForceDisable 
Workbooks.Open Filename:=strFilepath & strFilename, ReadOnly:=True 
Application.AutomationSecurity = msoAutomationSecurityByUI