【问题标题】:Get Mailbox Name using VBA使用 VBA 获取邮箱名称
【发布时间】:2020-06-21 05:36:56
【问题描述】:

我有多个邮箱,我需要一个 msgbox,它会弹出我用来回复特定电子邮件的活动邮箱的名称。

Private Sub oItem_Reply(ByVal Response As Object, Cancel As Boolean)
    Dim mapifolder As Outlook.NameSpace
    Set mapifolder = Application.GetNamespace("MAPI")
    Dim myNamespace As Outlook.Name
    MsgBox oItem.Parent
    MsgBox mapifolder.Store.Name
End Sub

我在第二个消息框收到错误 91

知道这里缺少什么吗?

【问题讨论】:

  • mapifolder 分配在哪里?错误 91 表示您正在对一个不是 Set 且具有有效对象引用的对象 (mapifolder) 进行成员调用 .Store,因此其值为 Nothing。考虑编辑您的问题以包含一个独立的minimal reproducible example
  • 我编辑并添加了 Mapifolder 的声明。我想要的唯一结果是每次单击回复时都会弹出一个包含活动邮箱名称的消息。

标签: vba outlook


【解决方案1】:

Namespace 类不提供 Store 属性:

Dim mapifolder As Outlook.NameSpace
Set mapifolder = Application.GetNamespace("MAPI")
MsgBox mapifolder.Store.Name

mapiFolderNamespace class 的一个实例,而不是Folder

要实现目标,您需要使用以下调用序列:

MsgBox oItem.Parent.Store.Name

请注意,如果是根文件夹,Parent 属性会返回命名空间类的实例。因此,在代码的最终版本中添加检查。

【讨论】:

  • 感谢您的反馈。我尝试添加您建议的代码并出现错误 438。
  • 先尝试将父对象转换为Folder类。您从哪里获得 oItem 实例?
  • 我将其声明为私人事件`Private WithEvents oItem As MailItem'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-12
  • 2017-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
  • 2016-09-10
相关资源
最近更新 更多