如何在编写电子邮件时触发宏?

时间:2016-08-09 07:40:08

标签: vba outlook outlook-vba

Sub WordCount()

Dim NewEmail As Object

Dim NewEmailString As String
Dim NewEmailStringwoSpaces As String

Dim CountLength As Integer
Dim CountLengthwoSpace As Integer
Dim WordCount As Integer

Set NewEmail = Application.ActiveInspector.CurrentItem

NewEmailString = NewItem.Body
NewEmailStringwoSpace = Replace(NewEmailString, " ", "")

CountLength = Len(NewEmailString)
CountLengthwoSpace = Len(NewEmailStringwoSpace)

WordCount = (CountLength - CountLengthwoSpace) + 1

If WordCount > 150 Then
MsgBox ("You are writing too much")
End If

End Sub    

当我在电子邮件中写得太多时,我想要一条警告信息。 如果我写的超过150个单词,我希望MsgBox似乎能阻止我。

我面临两个问题。

  1. 在撰写电子邮件时如何触发此宏? 是否有Outlook VBA的onkeyup事件处理程序?

  2. 如何区分原始邮件和回复邮件? 此宏无效,因为它在回复时计算原始邮件的单词。我只想数新消息。

1 个答案:

答案 0 :(得分:0)

1)您可以触发ItemSend事件中的代码,并在必要时取消发送。

2)有些人试图通过查找“From:”的第一个实例来区分回复。这不可靠。您可以在新检查员生成时计算单词。您可以将计数保存在全局变量中,以确定ItemSend中重新计数的差异。小心使用不可能在其他代码中意外重用的变量名。我建议您在不打开其他项目的情况下完成邮件,以保持正确的原始字数。