如何检测和批准Outlook VBA中的投票按钮?

时间:2014-08-09 06:51:21

标签: vba outlook outlook-vba

我正在尝试通过VBA检测投票按钮并批准它。我可以选择邮件,但我无法在MailItem类中找到任何方法来检测或批准投票按钮。 我选择当前电子邮件的代码

Dim myOlExp As Outlook.Explorer
Dim myOlSel As Outlook.Selection
Dim obj As MailItem
Set myOlExp = Application.ActiveExplorer
Set myOlSel = myOlExp.Selection
Set obj = myOlSel.Item(1)

2 个答案:

答案 0 :(得分:0)

  

我无法在MailItem类中找到任何检测方法

MailItem对象具有由分号分隔的.VotingOptions属性(字符串),例如"批准;拒绝"或"是;否"等等。

任何非空字符串都应表明存在投票按钮。

您表示您想要"批准投票按钮" - 这是什么意思?有一些标准的响应类型,但也可能有自定义响应。您无法自动处理任何可能的回复,即使您知道回复集,您如何自动"批准/拒绝或回答是/否 - 除非您阅读并理解他们要求您投票的内容?

所以我认为这不是一个好方法,但这里将是使用的方法:

If TypeName(obj) = "MailItem" And obj.VotingOptions <> vbNullString Then
    obj.VotingResponse = "Yes"

End If

检查您的&#34;默认&#34;响应是一个有效的响应(无效的响应在我测试时似乎不会引发错误):

Dim defaultResponse as String
Dim resp as String
defaultResponse = "Approve"

If TypeName(obj) = "MailItem" And obj.VotingOptions <> vbNullString Then
    For each resp in Split(obj.VotingOptions, ";")
        if resp = defaultResponse Then
           obj.VotingResponse = "Yes"
           Exit For
        End If
    Next
End If

您当然可以扩展逻辑以涵盖不同的场景等。

To&#34;编辑回复&#34;你可以这样做:

Dim m As MailItem
Set m = obj.Reply  'or obj.ReplyAll
m.Body = "Insert your response here!" '## Modify as needed
m.Display 'optional
m.Save
m.Send

答案 1 :(得分:0)

我能够使用此代码:

Sub SendEmail()
Dim myOlExp As Outlook.Explorer
Dim hk() As String
Dim myOlSel As Outlook.Selection
Dim obj As MailItem
Dim obj2 As Outlook.MailItem
Set myOlExp = Application.ActiveExplorer
Set myOlSel = myOlExp.Selection
Set obj = myOlSel.Item(1)

For Each MA In obj.Actions
If MA.Name = "Approved" Then
Set obj2 = Ma.Execute
obj.Body = "My Message"
obj.Send
Exit For
End If
Next MA
End Sub