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 中粘贴表格然后将表格转换为文本?