Проблема при получении Outlook 2007 Запуск сценария VBA - PullRequest
1 голос
/ 07 мая 2009

Я пытаюсь заставить Outlook сохранить вложение в ежедневном электронном письме в папку, где у меня может быть наблюдатель файловой системы, готовый для анализа и анализа вложения (это отчет проверки целостности данных). Я установил Правило, которое должно запускать сценарий VBA, но оно не выполняется настолько, насколько я могу судить. Я проверил в VB6, что код на самом деле сохранит некоторый текст в файл, поэтому, если Outlook действительно запускает сценарий VBA, он должен иметь возможность сделать то же самое. Но это не так! Кто-нибудь может видеть, какого чёрта я делаю не так?

Dim WithEvents objInbox As Outlook.Items

Private Sub Application_Startup()
   Set objInbox = Session.GetDefaultFolder(olFolderInbox).Items
End Sub

Sub SnagAttachment(theItem As MailItem)
    On Error Resume Next
    Dim fnum As Integer
    fnum = FreeFile()
    Open "c:\temp\success.txt" For Output As #fnum
    Print #fnum, "Ran SnagAttachment Successfully"
    Close #fnum
End Sub

Обратите внимание, что когда я использую мастер правил и выбираю «запустить скрипт», Sub SnagAttachment отображается как сценарий, который можно выбрать.

Ответы [ 4 ]

5 голосов
/ 21 ноября 2011

Как вы узнали бы, работает ли он или нет, если вы поставите On Error Resume Next в начале процедуры? Вы никогда не узнаете.

Вот правила создания скрипта, который должен выполняться как часть правила:

Как создать скрипт для мастера правил в Outlook

Также обратите внимание на предостережение в Как обрабатывать входящие сообщения в Microsoft Outlook :

Правило "запустить скрипт" не подходит для интенсивного трафика. приложения, так как Outlook может пропустить применение правила, если слишком приходит много предметов, соответствующих условиям правила.

2 голосов
/ 28 марта 2011

Чтобы скрипт заработал, вам нужно изменить настройки безопасности в Outlook. Перейдите в Инструменты> Макрос> Безопасность и измените его на «Предупреждения для всех макросов». Затем перезапустите Outlook.

Надеюсь, это поможет

0 голосов
/ 12 июля 2016

У меня возникла та же проблема, и мне кажется, что если в вашем коде есть ошибка, скрипт даже не запустится. Это в отличие от стандартного VBA, где отладчик всплывает для ошибок во время выполнения. Например, у меня была метка в конце моей функции, в которой после нее отсутствовала двоеточие. Это привело к тому, что скрипт вообще не запускался (в отличие от запуска до этой строки и последующего сбоя). Я бы предложил закомментировать весь ваш код и начать с msgbox «hello world». Я бы оставил это в вашем коде, когда вы отлаживаете, чтобы знать, что код работает, но вам, вероятно, придется закрывать окно сообщения много раз. Итеративно добавляйте строки кода назад, пока не обнаружите, в чем проблема.

0 голосов
/ 21 октября 2010

Попробуйте выделить точную проблему:

  1. Проверьте настройки безопасности макросов. Максимально он должен быть установлен не выше, чем «Предупреждения для всех макросов».
  2. Попробуйте создать новый модуль с одним тестовым сабом:
    Sub Test(Item as Outlook.MailItem)
    MsgBox "test"
    End Sub
    
    Затем настройте новое правило для обработки _все_ входящих сообщений, выполняющих эту подпрограмму, как единственное действие, и временно отключите все остальные правила. Затем отправьте сообщение себе. Если в результате вы не получите всплывающее окно, это может указывать на плохую установку Outlook. Попробуйте переустановить его или обратиться в службу поддержки MS напрямую.
  3. Если предыдущий тест был успешным, попробуйте поработать с объектом `Scripting.FileSystemObject` вместо` Freefile () `для создания и заполнения файлов. Это просто для проверки, есть ли здесь какая-то странная ошибка. Стоит выстрел, верно?
  4. Убедитесь, что условия вашего правила установлены правильно. В состоянии может возникнуть сбой или орфографическая ошибка, из-за которой просто отбрасываются все сообщения, для которых этот скрипт должен выполняться.
...