excel - 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
解决方案
您需要通过在调试器下运行代码来查找哪行代码出错。有关详细信息,请参阅调试。但我认为问题出在TreśćHTMLDoMaila
功能上。
Attachments.Add方法在Attachments
集合中创建一个新附件。附件的来源可以是文件(由带有文件名的完整文件系统路径表示)或构成附件的 Outlook 项目。因此,您只需要确保文件路径正确。
推荐阅读
- python - Pandas 数据框:没有要绘制的数字数据
- c - 是否可以使用 Rust 中的指针访问结构的元素?
- angular - 从 Angular 9 升级到 10 后自定义 CDK 步进器不起作用
- javascript - Vue - 子组件中的访问道具,常规 javascript
- javascript - 未处理的 JS 异常:意外的令牌 '<' 没有堆栈
- excel - 比较两个具有笛卡尔坐标的表并计算差异
- php - 如何使用 Eloquent 从中间表中获取所有关系?
- reactjs - 如何从 Ionic React 的本地存储中读取数据?
- php - 使用 cronjob 触发时出现“邮件程序错误:邮件正文为空”
- java - 将项目添加到作为另一个类的成员变量的数组中?