2015-09-23 5 views
0

Я пробовал коды ниже, и он работал именно так, как я хотел. http://www.mrexcel.com/forum/excel-questions/361751-visual-basic-applications-saving-email-only-after-send-pushed.htmlСохранение копии электронной почты Outlook (.msg) в папку после нажатия «Отправить»

Однако, поскольку я создавал это для других коллег, которые используют другую версию Excel, некоторые из моих коллег имеют библиотечную ошибку. После прочтения, я считаю, что мне нужно использовать последнее связывание вместо раннего связывания, чтобы люди с другой версией excel могли получить доступ к этой функции.

Как мне изменить код ниже (до позднего связывания), чтобы все остальные версии пользователей excel могли также использовать эту функцию? Копия рабочих кодов ниже.

Код класса

Option Explicit 
Public WithEvents obj_OL As Outlook.Application 
' 
Private Sub obj_OL_ItemSend(ByVal Item As Object, Cancel As Boolean) 

    '// For example, change pathway to suit, such as:       // 
    '// "\\Dacsrv02\rtddata\Advice\TechQueries\TRIM Emails\" & emailname 
    OutMail.SaveAs ThisWorkbook.Path & _ 
          Application.PathSeparator & _ 
          emailname 

    '// AFTER the event has been called, explicitly release Outlook.  // 
    Set obj_OL = Nothing 
    Set OutMail = Nothing 
End Sub 

Sub Коды

Option Explicit 
'// Connect the declared object w/the class module       // 
Dim cls_OL As New clsOutlook 
'// Declare the email msg (mail item) and emailname string as Public, so // 
'// that they can be "seen" from any procedures in the class mod.   // 
Public OutMail As Outlook.MailItem 
Public emailname As String 

Sub Email_Response() 
Dim strbody As String 

    '// Create our new mail item           // 
    Set OutMail = cls_OL.obj_OL.CreateItem(0) 

    '// Example substitute              // 
    strbody = "This is just example text" 

    On Error Resume Next 

    emailname = "something.msg" 

    With OutMail 
     .To = "" 
     .CC = "" 
     .BCC = "" 
     .Subject = "Specific Subject" 
     .body = strbody 
     .Display 
    End With 

    On Error GoTo 0 

End Sub 

ответ

0

Вы не можете (легко) поддерживает события с использованием позднего связывания, а не в VB скрипта. Тот, кто использует ваш код, должен будет добавить правильную версию Outlook в ссылки на проект.

+0

Привет, Димитрий. Причина, по которой я требую позднего связывания, заключалась в том, что я создал excel с этими кодами в офисе 2007, добавляя ссылку на объект Microsoft outlook версии 12. Другой пользователь с офисом 2013 года открывал файл, делал некоторую работу и сохраните его (excel автоматически подобрал офис 2013 версии для Microsoft Outlook версии 15). Когда другой пользователь регистрируется в excel с помощью Office 2007, макрос больше не запускается, поскольку библиотека версии 15 не найдена на машине с excel 2007 (пользователь недостаточно разбирается в технологии, чтобы изменить его на ссылку Outlook 2007). – Cusx

+0

Есть ли другой способ исправить эту проблему? Я бы подумал, что поздняя привязка может исправить это, поскольку нам не нужно выбирать ссылку на объект outlook, тем самым смягчая любую проблему, когда пользователь использует другую офисную версию. – Cusx

Смежные вопросы