首页 > 解决方案 > Application.ActiveExplorer.Selection 错误:数组索引超出范围

问题描述

我在 Outlook 中有代码,可以从当前打开的电子邮件或选定的电子邮件中创建回复。

此代码过去有效,但由于Application.ActiveExplorer.Selection不再识别打开的电子邮件而停止工作。

我的代码片段。

Public Sub ReplyWithAttachmentsTwo()
Dim rpl As Outlook.MailItem
Dim itm As Object
Dim objDoc As Word.Document
Dim objBkm As Word.Bookmark
 
Set itm = GetCurrentItem()
If Not itm Is Nothing Then
    Set rpl = itm.ReplyAll
    rpl.BodyFormat = olFormatHTML
    CopyAttachments itm, rpl
    Unload templateUserForm
    Unload inputUserForm
End If


Function GetCurrentItem() As Object
    Dim objApp As Outlook.Application
     
    Set objApp = Application
    On Error Resume Next
    Select Case TypeName(objApp.ActiveWindow)
        Case "Explorer"
            Set GetCurrentItem = objApp.ActiveExplorer.Selection.item(1)
        Case "Inspector"
            Set GetCurrentItem = objApp.ActiveInspector.CurrentItem
    End Select
 
    Set objApp = Nothing
End Function

Set GetCurrentItem = objApp.ActiveExplorer.Selection.item(1)是有问题的线。GetCurrentItem即使我打开了一封电子邮件,也会设置为 Nothing。这ActiveInspector部分工作正常。

没有On Error Resume Next我得到

运行时错误“-2147352567 (80020009)”数组索引超出范围。

标签: vbaoutlook

解决方案


如果出现运行时错误'-2147352567 (80020009)' Array index out of bounds,这意味着objApp.ActiveExplorer.Selection.Count = 0,这意味着没有选择任何内容。


推荐阅读