A regra "Executar script" do Outlook não aciona o script VBA para mensagens recebidas

Estou criando este novo tópico seguindo o conselho de outro membro. Para uma história adicional sobre como as coisas chegaram a esse ponto, consulteessa questão.

Eu tenho esse script VBA, que eu sei que funcionaE se é acionado. Se eu usar a sub-rotina TestLaunch com uma mensagem já na minha caixa de entrada que atenda aos critérios da regra (mas, é claro, não está sendo lançada pela regra), ela ativará o link que eu quero que ele ative perfeitamente. Se, quando eu criar a regra, digo para aplicá-la a todas as mensagens existentes na minha caixa de entrada, ela funcionará perfeitamente. No entanto, onde é necessário,quando novas mensagens chegarem isso não.

Eu sei que o script não está sendo acionado, porque se eu tiver uma regra como esta:

Regra de "Nova mensagem" do Outlook com "reproduzir som" habilitado

com "Tocar um som" como parte dele, o som sempre é reproduzido quando uma mensagem chega de um dos dois remetentes especificados, portanto, a regra está sendo acionada. Eu removi a parte de reprodução de som da regra e a integrei ao código VBA para fins de teste:

Option Explicit

Private Declare Function ShellExecute _
  Lib "shell32.dll" Alias "ShellExecuteA" ( _
  ByVal hWnd As Long, _
  ByVal Operation As String, _
  ByVal Filename As String, _
  Optional ByVal Parameters As String, _
  Optional ByVal Directory As String, _
  Optional ByVal WindowStyle As Long = vbMinimizedFocus _
  ) As Long

Private Declare Function sndPlaySound32 _
    Lib "winmm.dll" _
    Alias "sndPlaySoundA" ( _
        ByVal lpszSoundName As String, _
        ByVal uFlags As Long) As Long

Sub PlayTheSound(ByVal WhatSound As String)
    If Dir(WhatSound, vbNormal) = "" Then
        ' WhatSound is not a file. Get the file named by
        ' WhatSound from the Windows\Media directory.
        WhatSound = Environ("SystemRoot") & "\Media\" & WhatSound
        If InStr(1, WhatSound, ".") = 0 Then
            ' if WhatSound does not have a .wav extension,
            ' add one.
            WhatSound = WhatSound & ".wav"
        End If
        If Dir(WhatSound, vbNormal) = vbNullString Then
            Beep            ' Can't find the file. Do a simple Beep.
            Exit Sub
        End If
    Else
        ' WhatSound is a file. Use it.
    End If

    sndPlaySound32 WhatSound, 0&    ' Finally, play the sound.
End Sub

Public Sub OpenLinksMessage(olMail As Outlook.MailItem)

 Dim Reg1 As RegExp
 Dim AllMatches As MatchCollection
 Dim M As Match
 Dim strURL As String
 Dim RetCode As Long

Set Reg1 = New RegExp

With Reg1
 .Pattern = "(https?[:]//([0-9a-z=\?:/\.&-^!#$;_])*)"
 .Global = True
 .IgnoreCase = True
End With

PlayTheSound "chimes.wav"

' If the regular expression test for URLs in the message body finds one or more
If Reg1.test(olMail.Body) Then

'      Use the RegEx to return all instances that match it to the AllMatches group
       Set AllMatches = Reg1.Execute(olMail.Body)
       For Each M In AllMatches
               strURL = M.SubMatches(0)
'              Don't activate any URLs that are for unsubscribing; skip them
               If InStr(1, strURL, "unsubscribe") Then GoTo NextURL
'              If the URL ends with a > from being enclosed in darts, strip that > off
               If Right(strURL, 1) = ">" Then strURL = Left(strURL, Len(strURL) - 1)
'              The URL to activate to accept must contain both of the substrings in the IF statement
               If InStr(1, strURL, ".com") Then
                     PlayTheSound "TrainWhistle.wav"
'                    Activate that link to accept the job
                     RetCode = ShellExecute(0, "Open", "http://nytimes.com")
                     Set Reg1 = Nothing
                     Exit Sub
               End If

NextURL:
   Next

End If

Set Reg1 = Nothing

End Sub

Private Sub TestLaunchURL()
    Dim currItem As MailItem
    Set currItem = ActiveExplorer.Selection(1)
    OpenLinksMessage currItem
End Sub

que deve reproduzir "chimes.wav" se o script VBA for acionado em todos os casos e reproduzir "TrainWhistle.wav" se ocorrer o processamento real da ativação do link. Quando novas mensagens chegam, isso não acontece, mas se houver um "som de reprodução" na regra do Outlook que deve executar esse script, esse som é reproduzido.

No momento, tenho as configurações da Central de Confiabilidade para macros para permitir tudo, pois o Outlook estava sendo irritadiço quanto à assinatura do que usava o selfcert.exe no início do processo de teste. Eu realmente gostaria de poder elevar as proteções de macro novamente, em vez de deixá-las em "executar tudo" quando tudo estiver pronto.

Mas, acima de tudo, não consigo descobrir por que esse script será executado perfeitamente via depurador ou se aplicado a mensagens existentes, mas não é acionado pela mesma regra do Outlook aplicada a mensagens existentes quando uma nova mensagem real chega. Isso é verdade no Outlook 2010, onde estou desenvolvendo esse script, e também no Outlook 2016, na máquina de um amigo em que está sendo implantado.

Qualquer orientação sobre como resolver esse problema seria muito apreciada.

questionAnswers(1)

yourAnswerToTheQuestion