Les étapes suivantes (adaptées de l'excellente publication à http://www.cpearson.com/excel/AppEvent.aspx) sont la manière "minimalement viable" de faire ce dont vous avez besoin.
- ouvrir un nouveau classeur
- ouvrir l'éditeur Visual Basic
- Insérez un module de classe; dans la fenêtre des propriétés, définir le nom de classe à
CExcelEvents
- Ajoutez le code suivant dans le module de classe:
Private WithEvents App As Application
Private Sub Class_Initialize()
Set App = Application
MsgBox "initialized the class!"
End Sub
Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
MsgBox "New Workbook was opened: " & Wb.Name
End Sub
5. Faites un clic droit sur l'élément « ThisWorkbook » dans l'explorateur de projet, et sélectionnez "Afficher le code"
6. Ajoutez le code suivant:
Private XLApp As CExcelEvents
Private Sub Workbook_Open()
Set XLApp = New CExcelEvents
End Sub
Cela crée une instance de la classe CExcelEvents et "active la gestion des événements" lorsque l'addIn est chargé.
Enfin, enregistrez le fichier myEvents.xlam
à l'endroit où sont stockés AddIns - cela varie en fonction de la machine ...
Si maintenant vous fermez le fichier, puis ajoutez le Addin (encore une fois, dépend de votre environnement que ce soit à partir du ruban de développement ou le menu Outils), vous devriez voir une boîte de dialogue qui dit "initialisé la classe!". Cela montre que l'addIn est correctement installé et fonctionne. Maintenant, lorsque vous ouvrez un classeur, une autre boîte de message apparaît: "Nouveau classeur a été ouvert:" avec le nom.
De toute évidence, vous voudrez vous débarrasser des boîtes de message, et mettre un code "utile" qui fait ce que vous voulez faire (par exemple, consigner le nom du classeur dans un fichier). J'ai l'impression que vous n'avez pas besoin d'aide pour ce dernier - si j'ai tort, faites-le moi savoir.
Je pense que vous trouverez votre réponse lorsque vous regardez http://stackoverflow.com/q/8419728/1967396, et en particulier le lien vers http://www.cpearson.com/excel/AppEvent.aspx décrit comment faire cela. – Floris
toutes ces feuilles de calcul sont-elles activées? Si ce n'est pas le cas, comment envisagez-vous d'exécuter un événement? –
@mehow je comprends que si vous avez un complément qui exécute des événements d'application, et c'est celui qui surveille tous les événements "classeur ouvert" et les enregistre , les feuilles de calcul individuelles n'ont pas besoin d'être activées. – Floris