我遇到了 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