VBA Outlook Script - PullRequest
       11

VBA Outlook Script

0 голосов
/ 27 сентября 2011

У меня есть сценарий, который я со временем собрал.Недавно плагин, который нам нужно использовать в Outlook, вызвал некоторые проблемы.Как правило, мы получаем запрос дважды, потому что, когда плагин используется, электронная почта заканчивается уничтожением и повторным созданием с определенным именем файла вложения.В этот момент пользователю снова предлагается запрос.Я пытался работать в цикле For, чтобы пропустить скрипт, если он находит это вложение.Однако, когда я добавил цикл For, кажется, что весь сценарий пропущен.У меня ограниченный опыт работы с VBA, и я уверен, что это проблема с моим синтаксисом или использованием.Сценарий ниже:

Private Sub Application_ItemSend _
(ByVal Item As Object, Cancel As Boolean)
Dim strMsg As String
Dim Atmt As Variant

'strMsg = Item.Class
If Item.Class = "43" Then
    For Each Atmt In Item.Attachments
        If VBA.Right(Atmt.FileName, 3) = ".sf" Then
           GoTo NonEmailError
        End If
    Next Atmt
    If Item.CC = "" Then
        strMsg = "To recipients: " & Item.To & vbCrLf & _
        "Are you sure you want to send this message?"
    Else
        strMsg = "To recipients: " & Item.To & vbCrLf & _
        "Cc recipients: " & Item.CC & vbCrLf & _
        "Bcc recipients: " & Item.BCC & vbCrLf & _
        "Are you sure you want to send this message?"
    End If
Else
    GoTo NonEmailError
End If
' Exit Sub

' Ignore errors for now.
On Error GoTo NonEmailError

' Prompt user to fill in subject
If Item.Subject = "" Then
    MsgBox "You must enter a subject.", 48, "Empty Subject"
    Cancel = True
    GoTo NonEmailError
End If
' Exit Sub

' Prompt user to verify E-Mails
If MsgBox(strMsg, vbYesNo + vbQuestion _
    , "Send Confirmation") = vbNo Then
    Cancel = True
End If
Exit Sub

NonEmailError:
' The item being sent was not an e-mail and so don't prompt the user anything
Exit Sub

End Sub

1 Ответ

0 голосов
/ 27 сентября 2011

Я не очень знаком с outlook и VBA, но мое первое предположение в этом случае состоит в том, что item.class следует сравнивать с числовым значением 43, а не со строковым литералом "43".

Одна вещь, которая заставляет меня задуматься, - это то, что я ожидаю, что оператор выдаст ошибку, потому что "43" - это неправильный тип для Item.Class, но это может просто отразить мое незнакомство с материалом.

В соответствии со ссылкой msdn, item.class (в данном случае mailItem) является константой OlObjectClass, а 43 - olMail. Вероятно, было бы целесообразно изменить:

If Item.Class = "43" Then

до

If Item.Class = olMail Then

или хотя бы до:

If Item.Class = 43 Then

(см .: http://msdn.microsoft.com/en-us/library/bb208118%28v=office.12%29.aspx и http://msdn.microsoft.com/en-us/library/bb207137%28v=office.12%29.aspx)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...