自定义功能区/横幅而不是MsgBox

时间:2014-01-29 16:15:34

标签: vba outlook outlook-addin outlook-vba

我有一个程序可以检测附件的文件大小,如果它大于预定义的大小,则会显示MsgBox

我的问题是,是否可以使用自定义内联功能区或横幅,而不是使用MsgBox?下面是我想要重现的一个例子的图像。具体来说,我想重新创建电子邮件正文上方的粉红色横幅,而不是弹出MsgBox当且仅当文件大小符合大小标准时,否则它看起来完全正常。

http://gaspull.geeksaresexytech.netdna-cdn.com/wp-content/uploads/2008/03/outlook1.jpg

有人能指出我做更多功课的来源或参考吗?我搜索过谷歌,但我不认为我正在搜索正确的关键字,因为我的搜索不断提出其他内容。

1 个答案:

答案 0 :(得分:1)

我建议您修改代码,将一些HTML插入MailItem.HTMLBody

根据你的HTML技巧(这不是我的强项......),你可能会非常接近匹配外观&感觉那个通知。

然后,您可以使用ItemSend事件来确定如何处理电子邮件。

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

Select Case TypeName(Item)
    Case "MailItem"

        If InStr(1, Item.HTMLBody, GetWarningMessage) Then
            'If you want to cancel the send, then do this:
            Cancel = True
            MsgBox "Attachment is too big to send!"

            'Or, if you want to send anyways, do this:
            'Item.HTMLBody = Replace(Item.HTMLBody, GetWarningMessage, vbNullString)

        End If
    Case Else
    'Do nothing, or modify as needed
End Select

End Sub

您需要修改此函数以返回表示警告消息的正确子字符串。我使用简单的文字突出显示/等。但我认为你可以使用形状或智能艺术等。

Function GetWarningMessage() As String

Dim str$
str = "<p class=MsoNormal><b><span style='color:red;background:silver;mso-highlight:silver'>Warning:</span></b><span style='color:red;background:silver;mso-highlight:silver'> </span><span style='background:silver;mso-highlight:silver'>This message contains an attachment that is too large to send.</span><o:p></o:p></p>"
GetWarningMessage = str
End Function