【问题标题】:Outlook add-in mailitem.display not working Visual BasicOutlook 加载项 mailitem.display 无法正常工作 Visual Basic
【发布时间】:2020-02-15 01:08:38
【问题描述】:

我正在将一些 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",但该消息从未出现。

提前致谢

【问题讨论】:

  • 您是否收到错误消息?你真的可以单步执行你的代码吗?你确定代码甚至可以运行吗?
  • 是的,代码在 objMail.Display(False) 之前有效,objMail.Save() 有效,因为我在草稿文件夹中看到了一封新邮件。我试过 objMail.Display(True) 和 objMail.Display()
  • 所以没有错误,sub就退出了?
  • 我不认为它正在退出。如果我将 me.close 移到末尾,则电子邮件将保存到草稿中,并且表单永远不会自行关闭。 objMail.Display(False) 一定是导致 Outlook 在我看不到的环境空间中打开邮件

标签: visual-studio outlook vsto


【解决方案1】:

这显然应该有效。我在 Outlook 方面不是很熟练,但我想这里的问题是你从一个表单运行它(我看到了Me.Close) 那么 Outlook 不是因为表单仍然打开而阻止显示邮件吗(我猜是 modal = 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

【讨论】:

  • 非常感谢!我知道这一定是我缺少的一些简单的东西。将我的 from.showdialog 更改为 form.show 成功了。
猜你喜欢
  • 1970-01-01
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
相关资源
最近更新 更多