【发布时间】:2016-01-13 00:28:26
【问题描述】:
我正在将一些 Outlook VBA \ 宏转换为加载项。 到目前为止,我还没有运气将此代码传送到 VS2015 w\Office Dev Tools。
我创建了一个功能区\组\按钮\我可以在 Outlook 中看到它,一切看起来都很好,但我收到了一个错误。
--原始宏--
Sub Request()
Set myOlApp = CreateObject("Outlook.Application")
Set myNameSpace = myOlApp.Application.GetNamespace("MAPI")
Set objFolder = Session.GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders("Shared Documents")
Set myItem = objFolder.Items.Add("IPM.Note.Request")
myItem.Display
End Sub
我看到 Set 不再被允许,所以它们都被定义了。
这一行似乎是问题所在。 Session 和\或 GetDefaultFolder 返回 Null 并导致运行时异常。
错误 -- "System.NullReferenceException" --
objFolder = Session.GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders("Shared Documents")
VS 的建议是使用 Sub "New" 以及其他一些似乎不适用的。
请帮忙。 :-) 似乎我从 VS 错误解决建议中混合了多种编程类型。
谢谢。 -克里斯
【问题讨论】:
-
你能检查一下它是Session还是GetDefaultFolder?如果是Session,可以尝试将上面的Session引用替换为myOlApp.Session。
-
好吧,我试了一下,但得到了相同的结果。在 OlApp.Session 中交换后,我得到一个带下划线的 "olPublicFoldersAllPublicFolders" ---objFolder = myOlApp.Session.GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders("Shared Documents") ----- 相同的空参考,我明白为什么会这样Null 是因为直到 Outlook 会话提供程序路径后才获得该值。
-
为了明确我在做什么:我正在尝试打开一个自定义表单,该表单存储在所有公共文件夹 \ 共享文档 \ FormName --Macro 做得很好,但我会喜欢它是一个插件,所以我可以将它与其他可用的功能一起部署为一个包。
标签: vba outlook vsto visual-studio-2015