Outlook加载项mailitem.display无法使用Visual Basic

时间:2016-09-29 16:20:50

标签: visual-studio outlook vsto

我正在将一些Outlook VBA宏转换为外接程序。我在使用基于模板创建电子邮件的宏时遇到困难。我决定编写一个简单的按钮来创建和显示主题测试的新电子邮件。一切都在努力显示电子邮件。不知道我哪里出错了。

Private Sub ButtonGenEmail_Click(sender As Object, e As EventArgs) Handles ButtonGenEmail.Click
    Me.Close()
    Dim objApp As Outlook.Application
    Dim objMail As Outlook.MailItem
    objApp = Globals.ThisAddIn.Application
    objMail = objApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem)
    objMail.Subject = "test"
    objMail.Save()
    objMail.Display(False)
End Sub

任何帮助都会受到赞赏,有一次我在objMail.Display(False)之后添加了一个msgbox来显示Done并且msgbox永远不会出现

提前致谢

1 个答案:

答案 0 :(得分:1)

这显然应该有效。我在Outlook方面不太熟练,但我想这里的问题是你从表单中运行它(我看到了 Me.Close) 是不是Outlook阻止显示邮件,因为表单仍然打开(我猜模态= ShowDialog())?

我认为您必须将表单更改为非模态(使用Show()而不是ShowDialog()或在表单关闭后处理事件,像

下面的所有代码都是从我的脑海中写下来的,所以我可能会错过一些东西

初始化表单的方法

Dim frm as new YourForm()
frm.ShowDialog()

if frm.MyState = TheyClickOnButton Then
  ' Run your mailItem code here
End If

表单代码

Public Enum State
  Unknown = 0
  TheyClickedOnButton
End Enum

Public Property MyState as State

Private Sub ButtonGenEmail_Click(sender As Object, e As EventArgs) Handles ButtonGenEmail.Click
    MyState = TheyClickedOnButton
    Me.Close()    
End Sub