2015-10-14 220 views
0

我正在將一些Outlook VBA \宏轉換爲加載項。 到目前爲止,我沒有很多運氣將此代碼傳遞給VS2015 w \ Office Dev Tools。Outlook VBA 宏轉換爲加載項

我創建了一個Ribbon \ group \按鈕\我可以在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 

我看到這組將不再允許所以他們都被定義。

這條線似乎是問題所在。 Session和\或GetDefaultFolder返回Null並導致運行時異常。

錯誤 - 「System.NullReferenceException」 -

objFolder = Session.GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders("Shared Documents") 

從VS的建議是使用子「新」與其他幾個人說似乎並不適用一起。

請幫忙。 :-) 似乎我得到了混合了VS錯誤解決建議的各種編程類型。

謝謝。克里斯

+0

你可以檢查它是Session還是GetDefaultFolder?如果它是Session,則可以嘗試用myOlApp.Session替換上面的Session引用。 – DanL

+0

好吧,我給了一個嘗試,但我收到了同樣的結果。在交換OlApp.Session後,我得到一個帶下劃線的「olPublicFoldersAllPublicFolders」--- objFolder = myOlApp.Session.GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders(「共享文檔」)-----相同的空引用,我明白爲什麼它會是爲空,因爲在Outlook會話向程序提供路徑之前未獲取該值。 – CWB

+0

爲了清楚我在做什麼:我試圖打開一個存儲在所有公共文件夾\共享文檔\ FormName中的自定義窗體 - 宏做這個很好,但我希望它是一個附加組件,因此我可以將它作爲一個包與其他可用的函數一起部署。 – CWB

回答

0

好吧,它的工作喵。 發現萬一有人這樣方便的花花公子網頁需要一些指點: https://support.microsoft.com/en-us/kb/313800

當你創建它在VB.Net被編碼爲Outlook加載項項目

謝謝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