【问题标题】:Outlook 2016 VBA Type Mismatch on Application.GetNamespace (after Windows update)Application.GetNamespace 上的 Outlook 2016 VBA 类型不匹配(Windows 更新后)
【发布时间】:2020-10-01 09:23:56
【问题描述】:

我已经运行了一年的 Outlook 2016 VBA 宏来检查到达我收件箱的电子邮件。今天,在安装 Windows 10 更新后,运行此宏时出现类型不匹配错误。错误行是下面的Set olNs = Application.GetNamespace("MAPI") 行:

Private Sub Application_Startup()
    Dim olNs As Outlook.NameSpace
    Dim Inbox  As Outlook.MAPIFolder
    Dim olRecip As Recipient
    Dim dt As String
    Dim strFile_Path As String

    dt = Format(CStr(Now), "yyyy_mmm_dd_hh_mm")
    strFile_Path = "d:\temp\parking.log"
    Open strFile_Path For Append As #1
    Write #1, dt & " " & "Application_Startup() triggered"
    Close #1


    Set olNs = Application.GetNamespace("MAPI")
    Set olRecip = olNs.CreateRecipient("me@gmail.com")
    Set Inbox = olNs.Folders("me@gmail.com").Folders("Inbox")
    Set Items = Inbox.Items
End Sub

知道如何解决这个问题吗?

【问题讨论】:

    标签: vba outlook windows-update outlook-2016


    【解决方案1】:

    首先,您需要确保 COM 引用设置正确。

    您可以尝试在不设置局部变量的情况下运行代码:

    Private Sub Application_Startup() 
    
     MsgBox "Welcome, " & Application.GetNamespace("MAPI").CurrentUser 
    
     Application.ActiveExplorer.WindowState = olMaximized 
    
    End Sub
    

    【讨论】:

    • 谢谢 - 我的参考文献也完全按照您的图像设置。我尝试删除命名空间变量(olNs)的显式声明,这似乎解决了这个问题。 Application.GetNameSpace 返回的对象类型有变化吗?
    • 到目前为止没有任何改变。您的机器似乎有点损坏 - Windows 注册表项已损坏。
    【解决方案2】:

    我刚刚遇到了这个问题(COM 加载项很好),如上所述,删除显式声明似乎可以解决问题(您也可以将命名空间调暗为对象而不是 Outlook.Namespace)。

    作为其他人的快速参考,我使用以下代码绕过该问题:

    With Application.GetNamespace("MAPI")
        Dim Inbox As Outlook.MAPIFolder: Set Inbox = .GetDefaultFolder(olFolderInbox)
        Dim Junk As Outlook.MAPIFolder: Set Junk = .GetDefaultFolder(olFolderJunk)
    End With
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-06
      • 2017-04-14
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多