Outlook 2007 VBA - применять действие только в определенной учетной записи Outlook - PullRequest
0 голосов
/ 19 февраля 2012

Я использую следующий проект VBA, чтобы применить строку по умолчанию к началу поля «Тема» со всеми новыми электронными письмами. НО - я хочу, чтобы этот сценарий функционировал только тогда, когда Outlook был открыт для определенной учетной записи (т.е. у меня есть 2 учетные записи пользователя Outlook / PST-файлы - личные и служебные - и я хочу, чтобы строка темы добавлялась в электронные письма только тогда, когда я работаю в Бизнес аккаунт) Скрестим пальцы - спасибо за помощь. Кирк

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
If MsgBox("Send with 'Myrtleford Festival" at start of subject?", vbYesNo, "Send as Festival mail") = vbYes Then
        If (Left(Trim(Item.Subject), 11)) <> "The " Then
    Item.Subject = "The Myrtleford Festival 2012/ " + Item.Subject
    End If
End If

End Sub

Ответы [ 2 ]

0 голосов
/ 23 февраля 2012

ОК, круто.На самом деле я наткнулся на абсолютно надежное и элегантное решение.В Центре безопасности Outlook> Безопасность макросов я выбрал опцию «Предупреждать для всех макросов».Теперь, когда я открываю Outlook для любого из моих профилей, я получаю всплывающее окно с вопросом, хочу ли я включить / отключить макросы.Поскольку скрипт VBA - единственный работающий макрос, я могу легко отфильтровать, используется ли строка темы по умолчанию.Который будет работать 100% времени навсегда (поскольку я не вижу никакой причины, по которой я когда-либо буду использовать другой скрипт макро / VBA)

0 голосов
/ 19 февраля 2012

Это основа подхода.

Когда-то у меня было несколько учетных записей, но когда я это делал, папки верхнего уровня сильно отличались.Приведенный ниже код выводит в окно Immediate имена папок верхнего уровня.В моей нынешней системе это даст:

Personal Folders
Archive Folders
Test Folders

Если у ваших двух учетных записей разные папки верхнего уровня, вы можете отличить их от этих учетных записей.

Если вам нравится этот подход, но верхний уровеньпапки одинаковы, у меня есть процедура, которая ищет определенную папку на любой глубине в иерархии.Даже если основные папки одинаковы, я предполагаю, что некоторые из подпапок отличаются.

Sub AnswerA()

  Dim InxIFLCrnt As Integer
  Dim TopLvlFolderList As Folders

  Set TopLvlFolderList = _
          CreateObject("Outlook.Application").GetNamespace("MAPI").Folders

  For InxIFLCrnt = 1 To TopLvlFolderList.Count
    Debug.Print TopLvlFolderList(InxIFLCrnt).Name
  Next

End Sub
...