Как отключить отображение экрана создания электронной почты в outlook? - PullRequest
0 голосов
/ 07 февраля 2019

Ниже кода отображается экран создания электронной почты в Outlook при каждом его запуске.я попытался удалить .display из второй функции, но это дает ошибку во время выполнения.Я новичок в макросах VBA. Пожалуйста, посоветуйте, как скрыть экран создания электронной почты для каждой новой электронной почты, которая запускается.заранее большое спасибо.

Public Sub loopCheck()
Dim NumRows As Integer
Dim eID As String
Dim eName As String
Dim eEmail As String
Dim supportGroup As String
Dim managerEmail As String
Dim acName As String

Dim x As Integer
      Application.ScreenUpdating = False
      NumRows = Worksheets("Data").Range("A5", Range("A5").End(xlDown)).Rows.Count  ' Set numrows = number of rows of data.
      Worksheets("Data").Range("A5").Select ' Select first record.

      For x = 1 To NumRows  ' Establish "For" loop to loop "numrows" number of times.

        eID = Worksheets("Data").Range("A" & x + 4).Value
        eName = Worksheets("Data").Range("B" & x + 4).Value
        eEmail = Worksheets("Data").Range("C" & x + 4).Value
        supportGroup = Worksheets("Data").Range("F" & x + 4).Value
        managerEmail = Worksheets("Data").Range("G" & x + 4).Value
        acName = Worksheets("Data").Range("I" & x + 4).Value


        'Prepare table to be sent locally.
        Worksheets("Data").Range("AA5").Value = eID
        Worksheets("Data").Range("AB5").Value = eName
        Worksheets("Data").Range("AC5").Value = eEmail
        Worksheets("Data").Range("AF5").Value = supportGroup

        managerEmail = managerEmail + ";" + Worksheets("Data").Range("AA1").Value

        'Call Emails function.
        Call Emails(eEmail, managerEmail)

         ActiveCell.Offset(1, 0).Select
      Next

      Application.ScreenUpdating = True
End Sub

Public Sub Emails(y As String, z As String)

Dim outlook As Object
Dim newEmail As Object
Dim xInspect As Object
Dim pageEditor As Object

Dim a As String
Dim b As String

a = y
b = z


Set outlook = CreateObject("Outlook.Application")
Set newEmail = outlook.CreateItem(0)

With newEmail
    .To = a
    .CC = b
    .BCC = ""
    .Subject = "test loop"
    .Body = ""
    .display

    Set xInspect = newEmail.GetInspector
    Set pageEditor = xInspect.WordEditor


    Worksheets("Data").Range("AA4:AF5").Copy

    pageEditor.Application.Selection.Start = Len(.Body)
    pageEditor.Application.Selection.End = pageEditor.Application.Selection.Start
    pageEditor.Application.Selection.PasteAndFormat (wdFormatPlainText)

    .display
    .send
    Set pageEditor = Nothing
    Set xInspect = Nothing
End With

Set newEmail = Nothing
Set outlook = Nothing

End Sub

1 Ответ

0 голосов
/ 08 февраля 2019

У вас есть два экземпляра .display в вашей подпапке Emails. Если первый экземпляр подавлен, он блокирует редактор и не позволяет программе запускаться.Второй экземпляр может быть закомментирован, и .send достаточно для работы программы.Еще первый экземпляр будет отображаться на экране.Чтобы полностью отключить отображение экрана создания электронной почты, воспользуйтесь ссылками из программ на roundebruin , которые охватывают все типы возможностей отправки электронной почты без отображения экрана создания электронной почты.Метод, которым следует вы, является предпочтительным методом встраивания изображений или диаграмм в тело HTML.

ваш принятый код аналогичен SO Question .Пожалуйста, обратитесь к вступительным комментариям в ответе Дмитрия Стребченко "-

Вы должны также использовать MailItem.GetInspector вместо Application.ActiveInspector, так как сообщение еще не отображается.

Так что, если вы хотите подавить отображение экрана создания электронной почты, используйте другой подход, предложенный ранее.

Далее Евгений Астафьев также упомянул, отвечая на вопрос ЗДЕСЬ

Это известная проблема в Outlook. Сначала нужно вызвать метод Display, чтобы сделать инспектор видимым.

В противном случае он не будет работать.

Я думаю, что вы можетене подавлять отображение экрана создания электронной почты, применяя этот подход.

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