J'écris un modèle Word personnalisé qui effectue un traitement lors de l'enregistrement du document en cours.Détection de la fonction de sauvegarde que l'utilisateur choisit dans Office2007 à l'aide de Word VBA
Dans Office2007, pour enregistrer un document, vous pouvez utiliser les fonctions Enregistrer et Enregistrer sous et gérer les événements avec les macros FileSave et FileSaveAs. Mais lorsque l'utilisateur survole l'option SaveAs, d'autres sous-options s'affichent: Enregistrer en tant que document, en tant que modèle Word, en tant que document Word 97-2003, etc. Ces sous-options ne semblent pas avoir leurs propres événements, mais j'aimerais savoir quand l'utilisateur les utilise.
J'ai donc eu l'idée d'utiliser l'événement DocumentBeforeSave, mais je dois encore déterminer si la sauvegarde s'est produite avec les options standard Save/SaveAs ou avec les sous-options. J'ai pensé à la définition d'une variable à True dans les fonctions Save/SaveAs, que l'événement DocumentBeforeSave vérifierait pour voir si l'une des méthodes d'enregistrement normales se produisait, puis il redéfinirait la variable à False.
Mais après avoir expérimenté avec différentes méthodes, je ne peux pas comprendre comment je peux passer la valeur d'une variable entre ThisDocument et le module de classe qui a l'événement BeforeSave.
Des idées? Merci!
Edit: Exemple de code qui ne fonctionne pas:
ThisDocument:
Public pSSave As Boolean
Public Property Get SSave() As Boolean
SSave = pSSave
End Property
Public Property Let SSave(Value As Boolean)
pSSave = Value
End Property
Sub FileSave()
Me.SSave = True
If SSave = True Then
MsgBox "True"
End If
Application.ActiveDocument.Save
If SSave = True Then
MsgBox "True"
End If
End Sub
Module Classe:
Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
If Application.ActiveDocument.SSave = False Then
MsgBox "False"
End If
End Sub
L'enregistrement du module de classe est fait correct Je ne vais pas coller le code.
Le résultat affiché est vrai, faux, vrai alors qu'en théorie, il devrait être vrai, vrai.
Je ne sais pas si je vous ai bien compris ... quel est votre véritable objectif? autoriser ou interdire l'enregistrement? prendre le contrôle du processus? ou simplement passer la valeur de l'objet à la classe ...Il semble que vous ayez une idée, mais la question n'est pas claire. Vous pouvez ajouter du code pour mieux comprendre vos besoins ... –
Je souhaite le détecter et exécuter un extrait de code lorsque l'utilisateur enregistre le document avec les sous-options (sans utiliser les éléments de menu standard Enregistrer et Enregistrer). – Steve
vous pouvez créer une autre propriété 'let let \ get' dans votre classe et utiliser cette propriété pour transmettre n'importe quelle valeur à votre classe. Ou ajoutez simplement 'public variable' dans votre classe qui pourrait prendre cette valeur que vous passez –