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

时间:2014-08-06 11:35:08

标签: vba outlook access-vba

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 个答案:

答案 0 :(得分:1)

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

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

应该是

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

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