2010-03-26 8 views
5

Я вставил код в ItemSend и сохранил модуль ThisOutlookSession. Он работал один раз и больше не работает. Он был сохранен как VBAproject.OTM и все еще существует, когда я открываю модуль после перезапуска Outlook.BCC в ItemSend событие в Outlook 2007 больше не работает

Private Sub Application_ItemSend(ByVal Item As Object, _ 
           Cancel As Boolean) 
    Dim objRecip As Recipient 
    Dim strMsg As String 
    Dim res As Integer 
    Dim strBcc As String 
    On Error Resume Next 

    ''# #### USER OPTIONS #### 
    ''# address for Bcc -- must be SMTP address or resolvable 
    ''# to a name in the address book 
    strBcc = "[email protected]" 

    Set objRecip = Item.Recipients.Add(strBcc) 
    objRecip.Type = olBCC 
    If Not objRecip.Resolve Then 
     strMsg = "Could not resolve the Bcc recipient. " & _ 
       "Do you want still to send the message?" 
     res = MsgBox(strMsg, vbYesNo + vbDefaultButton1, _ 
       "Could Not Resolve Bcc Recipient") 
     If res = vbNo Then 
      Cancel = True 
     End If 
    End If 

    Set objRecip = Nothing 
End Sub 
+0

FWIW адрес электронной почты всегда будет разрешаться, поэтому нет необходимости вызывать метод Resolve или проверить его значение. – JimmyPena

ответ

2

Если вы зацепив ItemSend событие, которое должно быть в модуле класса с WithEvents и код для вызова его в обычном модуле. Кроме того, вы захотите сделать сообщение Item.Save на сообщение для BCC.

3

использование и если заявление на Subject поле элемента

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) 

If Item.Subject = "exact match" Then 

    strBcc = "[email protected]" 

    Set objRecip = Item.Recipients.Add(strBcc) 
    objRecip.Type = olBCC 
    If Not objRecip.Resolve Then 
     strMsg = "Could not resolve the Bcc recipient. " & _ 
       "Do you want still to send the message?" 
     res = MsgBox(strMsg, vbYesNo + vbDefaultButton1, _ 
       "Could Not Resolve Bcc Recipient") 
     If res = vbNo Then 
      Cancel = True 
     End If 


    End If 
    Item.Save 

    Set objRecip = Nothing 


End If 

или использовать, если вы хотите содержит слово в теме

If InStr(Item.Subject, "BCCSubject") = 0 Then 


End If 
0

У меня был этот вопрос в последнее время. Он начался после того, как файл PST был поврежден каким-то образом, и мне пришлось запустить scanpst.exe (который мне пришлось искать на моем диске, потому что сообщение об ошибке не сообщило вам, где оно)

После запуска scanpst.exe и проблема представилась, вот как я ее исправил.

Во-первых, я возился с макросъемкой. Я установил его в самую низкую настройку. Here is a link that covers how to change macro security. Откройте «Инструменты»> «Макро»> «Безопасность». Я установил его в «Нет проверки безопасности для макросов».

Тогда я использовал именно этот код:

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) 

Dim objRecip As Recipient 
Dim strMsg As String 
Dim res As Integer 
Dim strBcc As String 
On Error Resume Next 

' #### USER OPTIONS #### 
' address for Bcc -- must be SMTP address or resolvable 
' to a name in the address book 
strBcc = "PUT YOUR EMAIL ADDRESS HERE AND LEAVE THE QUOTES" 

Set objRecip = Item.Recipients.Add(strBcc) 
objRecip.Type = olBCC 
If Not objRecip.Resolve Then 
strMsg = "Could not resolve the Bcc recipient. " & _ 
"Do you want still to send the message?" 
res = MsgBox(strMsg, vbYesNo + vbDefaultButton1, _ 
"Could Not Resolve Bcc Recipient") 
If res = vbNo Then 
Cancel = True 
End If 
End If 

Set objRecip = Nothing 

End Sub 

Затем я нажал на кнопку сохранить, затем маленькую кнопку зеленый игры для запуска макроса. Он попросил меня назвать Макро. Я использовал bccUsername и нажал кнопку create. Редактор добавил раздел под названием Modules под номером ThisOutLookSession.

Затем я перезапустил Outlook и дважды протестировал его, и он сработал.

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