我正在将一些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永远不会出现
提前致谢
答案 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