Объект приложения Excel, кажется, «останавливается» при вызове в Outlook через VBA - PullRequest
0 голосов
/ 18 октября 2019

Я хочу создать резервную копию файла при отправке электронного письма. Следующий код работает нормально, если я делаю пошаговую отладку, она работает нормально. Без этого вручную нужно убить задачу Excel, иначе все зависнет:

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Call SaveACopy(Item)
    End Sub

Sub SaveACopy(Item As Object)
    Const olMsg As Long = 3

    Dim m As MailItem
    Dim savePath As String

    If TypeName(Item) <> "MailItem" Then Exit Sub

    Set m = Item
    Dim xlApp As Object
    Set xlApp = CreateObject("Excel.Application")
        xlApp.Visible = False

    Dim fd As Office.FileDialog
    Set fd = xlApp.Application.FileDialog(msoFileDialogFolderPicker)

    Dim selectedItem As Variant
    If fd.Show = -1 Then    
        For Each selectedItem In fd.SelectedItems
            savePath = selectedItem & "\"
            savePath = savePath & Format(Now(), "yyyy-mm-dd - hhNNss")
            savePath = savePath & ".msg"
            m.SaveAs savePath, olMsg
            Next
        End If

    Set fd = Nothing
        xlApp.Quit
    Set xlApp = Nothing

    End Sub

Есть идеи?

1 Ответ

1 голос
/ 18 октября 2019

Использование либерального приложения DoEvents для решения проблемы мало чем отличается от исправления отверстия в масляном поддоне вашего автомобиля путем добавления большего количества масла.

Что бы ни было причиной этого связывания, оно все еще существует, и ваша программа будет работатьбыстрее, если ты сможешь это исправить.

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