Outlook VBA \宏转换为加载项

时间:2015-10-14 18:57:07

标签: vba outlook vsto visual-studio-2015

我正在将一些Outlook VBA \ Macros转换为加载项。 到目前为止,我没有很多运气将这些代码传递给VS2015 w \ Office Dev Tools。

我创建了一个ribbon \ group \ buttons \我可以在Outlook中看到它,一切看起来不错但我收到错误。

- ORIGINAL MACRO -

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错误解决建议中混合了各种编程类型。

谢谢。 -Chris

1 个答案:

答案 0 :(得分:0)

好的,它正在喵喵叫。 找到这个方便的花花公子网页,以防有人需要一些指针: 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