Excel зависает после использования макроса, который отправляет электронную почту с использованием объектов данных Collaboration - PullRequest
0 голосов
/ 08 января 2020

Я использую макрос для отправки электронных писем, я использую такой подход: http://learnexcelmacro.com/wp/2011/12/how-to-send-an-email-using-excel-macro-from-gmail-or-yahoo/

Все работает нормально, за исключением того, что после отправки письма Excel зависнет. Это только то, что видно в документе, которые «заморожены». Если я прокручиваю вниз или переключаю лист, он обновит экран.

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

Это какая-то проблема с памятью или чем это может быть вызвано?

Я использую последнюю версию из Windows 10 (я полагаю, 1903 г.) и последней версии MS Excel.

Когда я закрываю и снова открываю Excel, все возвращается в нормальное состояние.

Это код по ссылке :

Sub SendEmailUsingGmail()

    On Error GoTo Err

    Dim NewMail As Object
    Dim mailConfig As Object
    Dim fields As Variant
    Dim msConfigURL As String

    Set NewMail = CreateObject("CDO.Message")
    Set mailConfig = CreateObject("CDO.Configuration")

    ' load all default configurations
    mailConfig.Load -1

    Set fields = mailConfig.fields

'Set All Email Properties

    With NewMail
        .Subject = "Test Mail from LearnExcelMacro.com"
        .From = "email@gmail.com"
        .To = "email2@gmail.com;email3@gmail.com"
        .CC = "email4@gmail.com"
        .BCC = ""
        .textbody = ""
    End With

    msConfigURL = "http://schemas.microsoft.com/cdo/configuration"

    With fields
        'Enable SSL Authentication
        .Item(msConfigURL & "/smtpusessl") = True

        'Make SMTP authentication Enabled=true (1)
        .Item(msConfigURL & "/smtpauthenticate") = 1

        'Set the SMTP server and port Details
        'To get these details you can get on Settings Page of your Gmail Account
        .Item(msConfigURL & "/smtpserver") = "smtp.gmail.com"
        .Item(msConfigURL & "/smtpserverport") = 465
        .Item(msConfigURL & "/sendusing") = 2

        'Set your credentials of your Gmail Account
        .Item(msConfigURL & "/sendusername") = "email@gmail.com"
        .Item(msConfigURL & "/sendpassword") = "********"

        'Update the configuration fields
        .Update

    End With
    NewMail.Configuration = mailConfig
    NewMail.Send
    MsgBox ("Mail has been Sent")

Exit_Err:

    Set NewMail = Nothing
    Set mailConfig = Nothing
    End

Err:
    Select Case Err.Number

    Case -2147220973  'Could be because of Internet Connection
        MsgBox " Could be no Internet Connection !!  -- " & Err.Description

    Case -2147220975  'Incorrect credentials User ID or password
        MsgBox "Incorrect Credentials !!  -- " & Err.Description

    Case Else   'Rest other errors
        MsgBox "Error occured while sending the email !!  -- " & Err.Description
    End Select

    Resume Exit_Err

End Sub

1 Ответ

0 голосов
/ 23 января 2020

Оказывается, проблема была в MsgBox. После удаления MsgBox ("Mail has been Sent") он работает отлично.

Нашел решение здесь: Использование CDO.sys DLL для отправки сообщений в VBA зависает Excel

Похоже, это должно быть ошибка.

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