Outlook VBA Application_Startup() not firing

本秂侑毒 提交于 2020-01-17 01:20:28

问题


I'm having difficulty getting my Application_Startup routine to fire when opening outlook. I've placed this in the "ThisOutlookSession" outlook object. The script from Application_ItemSend works fine however (events are correctly being triggered when sending mail).

The Application_Startup macro runs fine when I initiate it manually after outlook has been opened - just not upon startup itself.

Making the sub private makes no difference - neither does making the variables public.

I have macro settings on "Enable all macros" in the Trust Center.

I'm on Outlook 2016 on a PC running Windows 10 Enterprise.

I have researched the issue intensively but can't seem to work out what's causing the routine to not trigger.

Any help would be much appreciated!

Option Explicit

Dim add_str As String

Public Sub Application_Startup()

    Dim olNs As Outlook.NameSpace
    Dim Folder As Outlook.MAPIFolder
    Dim SubFolder As Outlook.MAPIFolder
    Dim Item As Object

    Set olNs = Application.GetNamespace("MAPI")
    Set Folder = olNs.Folders("albrobin@workmail.com").Folders("WORKFLOW").Folders("Reporting")

    For Each SubFolder In Folder.Folders
        If SubFolder.items.Restrict("[UnRead] = True").Count > 0 Then
            For Each Item In SubFolder.items
                Item.UnRead = False
            Next
        End If
    Next

End Sub

Public Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

    If TypeName(Item) <> "MailItem" Then
        Exit Sub
    End If

    If Item.Subject Like "RE: *" _
        Or Item.Subject Like "AW: *" _
        Or Item.Subject Like "FW: *" Then
        Exit Sub
    End If

    UserForm1.Show

    If add_str = "[URGENT] " Then
        Item.Importance = olImportanceHigh
    End If

    Item.Subject = add_str & Item.Subject

    add_str = vbNullString

End Sub
Public Sub routine(str_ As String)
    add_str = Replace(str_, vbCrLf, " ")
    add_str = "[" & add_str & "] "
End Sub
Sub show_form1()
    UserForm1.Show
End Sub

回答1:


I tested your code and I’ve ran into the same problem. I have solved this problem by restarting my PC and adding the Public Sub Application_Quit() method.




回答2:


Was experiencing same problem with Application_Startup() procedure not firing after a system reload and restore of my VBAProject. Checked macro settings, digitally signed the project - no luck. Received no button to Enable VBA during startup, like in Office 2010. VBA would function, but required me to manually fire the Application_Startup() procedure.

Tried creating a new, temporary "Private Application_Startup()" procedure, but no joy.

I deleted "Public" statement that preceded the Application_Startup() declaration. Saved, closed VBA and Outlook. Re-opened and suddenly it started working. Have restored the "Public", saved, re-opened, and it now seems to work properly. No explanation.




回答3:


Had a similar problem. Application_Startup didn't trigger on restarting Outlook and hence my changes in the function didn't load. The reason Application_Startup didn't trigger was because I had another program holding a reference open to Outlook



来源:https://stackoverflow.com/questions/52614805/outlook-vba-application-startup-not-firing

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!