Comment ouvrir Excel après la fermeture via VBA?

Tout en codant pour un outil d'automation utilisant VBA pour Excel, j'ai rencontré cette situation. J'ai codé le button de command "Fermer" ainsi que le "X" en haut à droite de la window de formulaire. Les deux codes sont identiques et répondent à leur but.

J'aimerais savoir si je ferme le classur à l'aide de la méthode ActiveWorkbook.Close dans les deux sous-procédures, puis comment afficher le même projet VBA de la feuille Excel?

J'utilise Microsoft Office 2010.

Voici mon code à titre de reference:

 Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = vbFormControlMenu Then MsgBox "Thanks for using! Tool will now close.", vbInformation + vbOKOnly Unload Me ActiveWorkbook.Close End If End Sub 

Visual Basic pour Applications vit dans une application hôte … ici Microsoft Excel.

Si vous avez 10 ouvrages ouverts, Visual Basic Editor (VBE) aura 10 projets VBA dans votre window Project Explorer (Ctrl + R); en fermant un, supprime son projet VBA du VBE – le code VBA est dans ce cahier que vous venez de fermer!

Il existe deux types de projets VBA: l'un est le classur macro-enabled (.xlsm), l'autre est un complément Microsoft Excel (.xlam). L'ancien vit et meurt avec le cahier dans lequel il est écrit; le dernier vit et meurt avec l' application dans laquelle il est chargé.

Si vous avez besoin d'un code qui peut gérer plusieurs classurs, envisagez d'save (F12) un complément; ActiveWorkbook.Close ferme le classur actif , puis le complément est toujours chargé … et vous pouvez toujours afficher sa source VBA.


Si vous voulez seulement fermer un formulaire, je vous suggère de ne pas implémenter le gestionnaire QueryClose et de laisser le formulaire fermer lui-même – et de laisser le classur ouvert! . Si vous souhaitez fermer un autre classur , je vous recommand fortement d'éviter ActiveWorkbook et d'utiliser une reference d'object Workbook place.