Outlook VBA Task с приложениями

Outlook 2010 VBA, я хочу создать задачу при отправке электронной почты, но я хочу добавить в задачу все вложения из электронной почты, код работает хорошо, но не добавляет вложение, я пытаюсь использовать.Attachments.Add( не поддерживается),.Attachments = item.Attachments return propierty только для чтения

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

спасибо

вот код

Public WithEvents myOlApp As Outlook.Application

Private Sub Application_MAPILogonComplete()

End Sub

Private Sub Application_Startup() Initialize_handler End Sub

Открытый Sub Initialize_handler() Установите myOlApp = CreateObject ("Outlook.Application") End Sub

Private Sub myOlApp_ItemSend (элемент ByVal как объект, отменить как логическое)

Dim intRes As Integer Dim strMsg As String Dim objTask As TaskItem Set objTask = Application.CreateItem(olTaskItem) Dim strRecip As String Dim att As MailItem Dim objMail As Outlook.MailItem

strMsg = "Вы хотите создать задачу для этого сообщения?" intRes = MsgBox (strMsg, vbYesNo + vbExclamation, "Создать задачу")

If intRes = vbNo Then
  Cancel = False
Else

For Each Recipient In item.Recipients
    strRecip = strRecip & vbCrLf & Recipient.Address
Next Recipient



With objTask
    '.Body = strRecip & vbCrLf & Item.Body
    .Body = item.Body
    .Subject = item.Subject
    .StartDate = item.ReceivedTime
    .ReminderSet = True
    .ReminderTime = DateSerial(Year(Now), Month(Now), Day(Now + 1)) + #8:00:00 AM#
    **.Attachments.Add (item.Attachments)**
    .Save
End With

Cancel = False

End If

Set objTask = Nothing

End Sub

0
источник поделиться
2 ответа

Attachments.Add позволяет передать строку как параметр (полностью queslified имя файла вложения) или элемент Outlook (например, MailItem). Вы передаете коллекцию вложений как параметр, вы не можете этого сделать.

Для каждого вложения сохраните вложение сначала (Attachment.SaveAsFile), затем добавьте их в задачу, по очереди передающую имя файла в качестве параметра.

+1
источник

Вот мой последний код

Public WithEvents myOlApp As Outlook.Application

Private Sub Application_MAPILogonComplete()

End Sub

Private Sub Application_Startup()
 Initialize_handler
End Sub

Public Sub Initialize_handler()
 Set myOlApp = CreateObject("Outlook.Application")
End Sub

Private Sub myOlApp_ItemSend(ByVal item As Object, Cancel As Boolean)

Dim intRes As Integer
Dim strMsg As String
Dim objTask As TaskItem
Set objTask = Application.CreateItem(olTaskItem)
Dim strRecip As String
Dim att As MailItem
Dim objMail As Outlook.MailItem
Dim Msg As Variant

strFolderPath = "C:\temp" ' path to target folder


strMsg = "Do you want to create a task for this message?"
intRes = MsgBox(strMsg, vbYesNo + vbExclamation, "Create Task")


If intRes = vbNo Then
  Cancel = False
Else

For Each Recipient In item.Recipients
    strRecip = strRecip & vbCrLf & Recipient.Address
Next Recipient

item.SaveAs strFolderPath & "\" & "test" & ".msg", olMSG

'item.Save

With objTask
    '.Body = strRecip & vbCrLf & Item.Body
    .Body = item.Body
    .Subject = item.Subject
    .StartDate = item.ReceivedTime
    .ReminderSet = True
    .ReminderTime = DateSerial(Year(Now), Month(Now), Day(Now + 1)) + #8:00:00 AM#
    .Attachments.Add item
    .Save
End With

Cancel = False

End If

Set objTask = Nothing

End Sub
+1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос