首页 > 解决方案 > Outlook 邮件“数组索引超出范围”

问题描述

我遇到了 Outlook 邮件的问题。我正在通过 Excel VBA 创建 HTML 邮件,并且可以正常显示。当用户单击“发送”时,它正在正确发送。但是,如果用户(在 Outlook 2016 上)尝试添加附件,则会收到提示“数组索引超出范围”(即使 Excel 在创建邮件后关闭),所以我认为这是 Outlook 的问题,而不是 Excel 的问题。它不会在 Outlook 2010 上发生。

我注意到,当用户将消息类型更改为 RTF 时,可以添加附件(但 HTML 格式对我来说非常重要,因为我想在正文中发送表格)。

我搜索了 Stack 和其他网站,但我在该提示中找到的所有内容都在代码运行时出现在 Excel 中。提前致谢 :)


我被要求提供代码(在我看来这并不重要,但也许我错了;))。

Sub WysyłanieMaila(Treść As String, Temat As String, Adresat As String, DW As String, Załącznik As String)

Dim Wyświetlanie As Boolean
Dim Wyślij As Boolean
Dim OutApp As Object
Dim OutMail As Object

Wyświetlanie = True
Wyślij = False
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(olMailItem)

On Error Resume Next
With OutMail
    .BodyFormat = 3
    If Wyświetlanie Then .Display
    .To = Adresat 
    .CC = DW
    .Subject = Temat
    .Body = Treść
    .Attachments.Add Załącznik
    If Wyślij Then
        .Send
    Else
        .Display
    End If
End With
On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing

End Sub

Function TreśćHTMLDoMaila(WierszMin As Long, WierszMax As Long) As String

Dim i As Long
Dim j As Integer
Dim KolumnaPoczątek As Integer
Dim KolumnaKoniec As Integer

KolumnaPoczątek = 1
KolumnaKoniec = 18

TreśćHTMLDoMaila = "<table border=1 cellpadding=5 style=""border-collapse:collapse""><tr>"

For j = KolumnaPoczątek To KolumnaKoniec
    If Not j = 4 And Not j = 14 And Not j = 15 And Not j = 17 Then TreśćHTMLDoMaila = TreśćHTMLDoMaila & "<td><b><font face=""Calibri"" size=""2"">" & Arkusz1.Cells(1, j).Value & "</font></b></td>"
Next j
TreśćHTMLDoMaila = TreśćHTMLDoMaila & "</tr>"

For i = WierszMin To WierszMax
    If Arkusz1.Cells(i, 25).Value = "Nierozliczone" Then
        TreśćHTMLDoMaila = TreśćHTMLDoMaila & "<tr>"
        For j = KolumnaPoczątek To KolumnaKoniec
            If Not j = 4 And Not j = 14 And Not j = 15 And Not j = 17 Then TreśćHTMLDoMaila = TreśćHTMLDoMaila & "<td><font face=""Calibri"" size=""2"">" & Arkusz1.Cells(i, j).Value & "</font></td>"
        Next j
        TreśćHTMLDoMaila = TreśćHTMLDoMaila & "</tr>"
    End If
Next i

TreśćHTMLDoMaila = TreśćHTMLDoMaila & "</table>"

End Function

标签: excelvba

解决方案


您需要通过在调试器下运行代码来查找哪行代码出错。有关详细信息,请参阅调试。但我认为问题出在TreśćHTMLDoMaila功能上。

Attachments.Add方法在Attachments集合中创建一个新附件。附件的来源可以是文件(由带有文件名的完整文件系统路径表示)或构成附件的 Outlook 项目。因此,您只需要确保文件路径正确。


推荐阅读