微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何修复 Outlook VBA 编译错误类型不匹配

如何解决我如何修复 Outlook VBA 编译错误类型不匹配

我收到编译错误:当我执行宏打开非邮件文件夹时键入不匹配。它发生在 Set oMailBox

Sub openSxxInBox()

Dim oOutlook As outlook.application
Dim oFolder As Outlook.Folder
Dim oMailBox As Outlook.Folder
Dim oFldr As Outlook.Folder

Set oOutlook = CreateObject("outlook.application")
Set oNS = oOutlook.GetNamespace("MAPI")
Set oMailBox = "Sxx"
Set oFldr = "InBox"

oNS.logon 'does not do anything if Outlook is already running

Set oFolder = oNS.Folders(oMailBox).Folders(oFldr)

    If (oOutlook.ActiveExplorer Is nothing) Then
        oFolder.display
        Else
        Set oOutlook.ActiveExplorer = oFolder
    End If

End Sub

解决方法

在代码中,您可能会发现以下行:

Dim oMailBox As Outlook.Folder

后来你尝试分配一个不正确的字符串值:

Set oMailBox = "Sxx"
Set oFldr = "Inbox"

文件夹对象和字符串之间没有直接转换。您可以使用 NameSpace.GetDefaultFolder 方法返回一个 Folder 对象,该对象代表当前配置文件所请求类型的默认文件夹;例如,获取当前登录用户的默认收件箱文件夹。

请注意,您可能会发现 Store.GetDefaultFolder 方法很有用,它返回一个 Folder 对象,该对象表示存储中的默认文件夹,并且属于 FolderType 参数指定的类型。此方法类似于 GetDefaultFolder 对象的 NameSpace 方法。不同之处在于,此方法获取与帐户关联的交付存储中的默认文件夹,而 NameSpace.GetDefaultFolder 返回当前配置文件的默认存储中的默认文件夹。

您也可以在代码中将对象定义为字符串:

Sub openSxxInbox()

Dim oOutlook As Outlook.Application
Dim oFolder As Outlook.Folder
Dim oMailBox As string
Dim oFldr As string

Set oOutlook = CreateObject("Outlook.Application")
Set oNS = oOutlook.GetNamespace("MAPI")
oMailBox = "Sxx"
oFldr = "Inbox"

oNS.Logon 'does not do anything if Outlook is already running

Set oFolder = oNS.Folders(oMailBox).Folders(oFldr)

    If (oOutlook.ActiveExplorer Is Nothing) Then
        oFolder.Display
        Else
        Set oOutlook.ActiveExplorer = oFolder
    End If

End Sub

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。