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