【问题标题】:Outlook VBA \ Macro conversion to Add-inOutlook VBA \ 宏转换为加载项
【发布时间】: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


【解决方案1】:

好的,它正在工作喵。 找到这个方便的花花公子网页,以防有人需要一些指示: https://support.microsoft.com/en-us/kb/313800

当您为 Outlook 加载项创建项目时,它正在 VB.Net 中进行编码

感谢DanL的输入,让我重新思考和搜索。

Private Sub Button1_Click(sender As Object, e As RibbonControlEventArgs) Handles Button1.Click

    Dim objOutlook As Outlook._Application
    objOutlook = New Outlook.Application()
    Dim objNS As Outlook._NameSpace = objOutlook.Session
    Dim objFolder As Outlook.MAPIFolder =
         objNS.GetDefaultFolder(Outlook.OlDefaultFolders.olPublicFoldersAllPublicFolders).Folders("Shared Documents")

    Dim myItem = objFolder.Items.Add("IPM.Note.CustomFormName")
    myItem.Display()

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-10
    • 2021-08-22
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多