這是我詢問的previous question的後續結果。感謝社區爲您提供幫助。子結束後Application_Startup變量消失
我試圖創建WithEvents代碼第一次檢查新項目的文件夾。最終的計劃是使用ItemsAdd事件觸發一堆其他處理,但現在,只是試圖將其保存到一個文件夾,並沒有得到那麼多。
當我運行下面的Application_Startup代碼時,立即窗口顯示我找到了正確的clntFldrItms。問題是,如果我然後將一個項目拖到相關文件夾中,則ItemAdd宏不會觸發。當我嘗試爲clntFldrItms添加手錶時,該變量未設置爲任何內容。它看起來像Application_Startup子完成後,分配停止。
所有的代碼都在ThisOutlookSession對象中。
這是因爲我正在使用SMTP電子郵件地址(而不是Exchange)嗎?
再次感謝您的幫助。
編輯添加我對尤金評論的迴應。我注意到,當我打開編輯器並進入Application_Startup子目錄時,即使在設置clntFldrItms = clntFldr.Items行之前,clntFldrItms也已正確分配。一旦我完成了一步,它就消失了。我無法進入ItemAdd子項,但是當我進入其他代碼時,clntFldrItms是Nothing。
FINAL EDIT對不起,我意識到我忘了關閉它。我本身無法解決問題,但我意識到這是由於我的SMTP帳戶。當我在Exchange上使用它時,它工作正常。看來,除非我在Exchange工作,否則事件不會啓動。
Option Explicit
Public WithEvents clntFldrItms As Outlook.Items
Private Sub Application_Startup()
Dim clntFldr As MAPIFolder
Set clntFldr = Application.Session.GetDefaultFolder(olFolderSentMail).Folders("Client Emails")
Set clntFldrItms = clntFldr.Items
Set clntFldr = Nothing
Debug.Print clntFldrItms.item(1).Subject
End Sub
Private Sub clntFldrItms_ItemAdd(ByVal item As Object)
Dim bChar As String
bChar = "\/:*?™""® <>|.&@#_+`©~;-+=^$!,'" & Chr(34)
Dim saveName As String
If item.Class = olMail Then
saveName = item.Subject
For x = 1 To Len(bChar)
saveName = Replace(saveName, Mid(bChar, x, 1), "-")
Next x
item.SaveAs "C:\Users\User\Google Drive\8 - VBA work\Preparation for Assisted Responder\Sent Messages Folder\" & _
saveName & ".msg", olMSG
End If
End Sub
是否允許在Outlook中運行VBA宏?您是否有機會查看信任中心設置? –
謝謝Eugene,我已經在我的outlook會話中運行了一堆宏。沒有骰子... – PKB
我已經採取了代碼工作,它似乎在Outlook 2010和Microsoft Exchange上工作,因此就我而言,問題就解決了。我不知道問題是否是Outlook 2016或SMTP電子郵件地址,但我懷疑後者。喜歡想法,但如果沒有人,謝謝你的嘗試。乾杯 – PKB