VBA 访问函数 - 将 Outlook 文件夹/收件箱作为对象返回

Posted

技术标签:

【中文标题】VBA 访问函数 - 将 Outlook 文件夹/收件箱作为对象返回【英文标题】:VBA Acess Function - Return Outlook Folder/Inbox as object 【发布时间】:2014-08-06 11:35:07 【问题描述】:
Private OutlookApp, Nms As Object


Sub TestSub()
Dim Fold As Object

Set OutlookApp = GetObject(, "Outlook.Application")
Set Nms = OutlookApp.GetNamespace("MAPI")


Set Fold = outlookFolderpath("Test Folder")

For Each Email In Fold.Items ' This loop doesnt work
Debug.Print Email.Subject
Next


End Sub

Private Function outlookFolderpath(Inbox As String) As Object
Dim fold_name As String

Set OutlookFolder_Path = Nms.Folders(Inbox).Folders("Inbox")

For Each Email In OutlookFolder_Path.Items ' This Loop works
Debug.Print Email.Subject
Next


End Function

你好, 我希望有人可以帮助我处理上面的代码。我正在尝试从函数设置和收件箱文件夹路径并在子中使用它。 它在函数内工作正常,但在 sub 中设置时不能? 谁能看到我哪里出错了?我收到运行时错误“91” - 对象变量或未设置块变量 所以我会收集到该函数没有返回对象,但我不确定为什么?

谢谢

【问题讨论】:

【参考方案1】:

你需要从函数中返回对象,所以

Set OutlookFolder_Path = Nms.Folders(Inbox).Folders("Inbox")

应该是

Set outlookFolderpath = Nms.Folders(Inbox).Folders("Inbox")

如果您在代码顶部声明Option Explicit,您将不太可能遇到此类问题,因为您的所有变量都应声明。

【讨论】:

您好,抱歉,_ 是一个错字,为了示例的目的,我制作了脚本的精简版。您确实引导我找到了答案,因为我需要将电子邮件作为对象才能工作,因此感谢“选项显式”提示

以上是关于VBA 访问函数 - 将 Outlook 文件夹/收件箱作为对象返回的主要内容,如果未能解决你的问题,请参考以下文章

访问 VBA 以表格格式将查询结果发送到 Outlook 电子邮件

在 Excel 中使用 VBA,如何在 Outlook 中粘贴表格然后将表格转换为文本?

将 Outlook 消息保存到 VBA 在本地驱动器中创建的文件夹中

访问 Outlook VBA 对象模型时单词冻结

使用 VBA 禁用 Outlook 安全设置

使用 Access VBA 从 Outlook 获取附件