2017-07-07 2 views
0

Je dois exécuter des modifications sur les e-mails que je redirige ou réponds dans Outlook 2016. Pour ce faire, j'ai le code suivant; ce code exécute la modification (remplacer une valeur regex avec vide) dans la fenêtre InlineResponse:L'utilisation de VBA dans Outlook pour InlineResponse rompt le comportement standard. Pourquoi?

Dim myOlApp As New Outlook.Application 
Public WithEvents myOlExplorer As Outlook.Explorer 

Public Sub Initialize_handler() 
    Set myOlExplorer = myOlApp.ActiveExplorer 
End Sub 

Private Sub myOlExplorer_InlineResponse(ByVal Item As Object) 
    ' first replace using the word editor 
    Dim oDoc As Word.Document 
    Dim wdSelection As Word.Selection 
    Set oDoc = Item.GetInspector.WordEditor 
    Set wdSelection = oDoc.Application.Selection 
    wdSelection.Find.ClearFormatting 
    wdSelection.Find.replacement.ClearFormatting 
    With wdSelection.Find 
     .Text = "SPECIFIC TEXT WITH A VARIABLE LENGTH OF SPACES OF DIFFERENT KINDS AFTER THAT I NEED TO INCLUDE [!a-zA-Z0-9]*([a-zA-Z0-9])" ' my regex goes in here the a-zA-Z0-9 part is to work around the non-greedy regex. 
     .replacement.Text = "\1" 
     .Forward = True 
     .Wrap = wdFindContinue 
     .Format = False 
     .MatchCase = False 
     .MatchWholeWord = False 
     .MatchWildcards = True 
     .MatchSoundsLike = False 
     .MatchAllWordForms = False 
    End With 
    wdSelection.Find.Execute Replace:=wdReplaceAll 
End Sub 

Cependant, quand je lance ce code (qui fonctionne bien dans l'ensemble), un comportement par défaut d'Outlook est cassé. Exemples:

  • Le brouillon du message n'est pas enregistré. Si je frappe la réponse, tapez quelque chose dans la fenêtre de réponse en ligne et laisser ce message, en rentrant du travail est allé
  • Coller du presse-papiers ne fonctionne pas

Peut-être plus caractéristiques sont cassées maintenant. Je n'ai aucune idée de pourquoi c'est. Qu'est-ce qui cause cela, et que pouvons-nous faire pour empêcher cela de se produire?

Répondre

1

Vous devez utiliser une propriété spécifique pour obtenir le document Word à partir d'une réponse en ligne: Explorer.ActiveInlineResponseWordEditor.

+0

Dans ce cas: myOlExplorer.ActiveInlineResponseWordEditor – Jeroen