Falhas aleatórias de regras do Outlook 2013 VBA

0

Meu objetivo é não fazer com que o Outlook exclua todos os e-mails de um endereço especificado, mantendo no máximo 3 mais recentes (isso realmente ajuda com algumas assinaturas diárias, como cupons, etc.).

Eu tenho muitas regras classificando e-mails em pastas diferentes e marcando-as com uma categoria especial (vamos chamá-la de "Quantidade: 3"). Eu também tenho a última regra na lista que executa o meu script VBA: ele conta e-mail do mesmo remetente em uma pasta (com essa categoria "Valor: 3") e exclui o antigo deixando não mais que o valor solicitado.
A coisa toda funciona bem quando o Outlook está em execução e recebe novas mensagens. Mas quando eu inicio o Outlook pela primeira vez e há novos e-mails no servidor - ele informa aleatoriamente que a regra de script não foi executada e a desliga ...
Meu script faz log, então eu tenho certeza que não é um problema de script incorreto. Além disso, parece que quando eu ligo o log de depuração no Outlook - o problema desaparece. E não há nada de suspeito no diário do sistema também ...

Então, a questão é como posso descobrir o que há de errado com isso? Se negativo - existe uma maneira de obter o que eu quero no Outlook 2013?
E sim, eu sei que o MS sugere não usando a regra do VBA junto com outros tipos de regras, não importa a ordem e assim por diante, mas ainda não consigo acreditar que eles tornaram isso tão imprevisível ...

ps: a mesma solução funcionou mais ou menos estável no Outlook 2007 nos dias de hoje ...

    
por FlasH from Ru 02.04.2015 / 00:33

2 respostas

0

Homem! Parece que finalmente consertei (facepalm) Então, o modo como funciona all as vezes é:

  • O mesmo sub-baseado em regras do VBA fazendo coisas importantes
  • Manipuladores de evento
  • Application_Startup / Application_Quit para ativar / desativar a regra correspondente para evitar erros aleatórios no início do Outlook (veja meus comentários para perguntas / respostas aqui)
  • Atalho do Autolaunch copypasted da pasta Microsoft Office 2013 de Iniciar - > Todos os Programas (foi um atalho para OUTLOOK.EXE originalmente e parece que ele não dispara manipuladores de eventos quando você inicia o Outlook dessa maneira O_o)
por 28.07.2015 / 23:36
0

Se, em vez de tentar fazer tudo de uma só vez, você deveria marcar algo que deseja excluir com uma Categoria. Você poderia criar uma pasta de pesquisa virtual para essa categoria. Isso tem a vantagem de trabalhar em todas as pastas reais.

Em seguida, você pode escrever um VBA simples que é executado na inicialização e no desligamento do Outlook, que exclui o conteúdo dessa pasta de pesquisa virtual.

Então você não está dependente dos eventos de transporte de mensagens acionados na ordem correta.

    
por 03.04.2015 / 10:04