Почта Outlook "Индекс массива выходит за пределы" - PullRequest
0 голосов
/ 16 октября 2019

У меня проблема с почтой 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

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Хорошо, это был не тот случай (как я упоминал ранее, при запуске кода проблем не было), но удаление строки с помощью .Attachment.Add решило проблему на моем компьютере. Я спросил своих коллег, ожидая ответа.

0 голосов
/ 16 октября 2019

Вам нужно найти, какая строка кода выдает ошибку, запустив код под отладчиком. См. Отладка для получения дополнительной информации. Но я думаю, что проблема заключается в функции TreśćHTMLDoMaila.

Метод Attachments.Add создает новое вложение в коллекции Attachments. Источником вложения может быть файл (представленный полным путем к файловой системе с именем файла) или элемент Outlook, который составляет вложение. Итак, вам просто нужно убедиться, что путь к файлу правильный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...