У меня проблема с почтой Outlook. Я создаю письмо в формате HTML через Excel VBA, и оно отображается правильно. Когда пользователь нажимает «Отправить», он отправляется правильно. Но если пользователь (в 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