Tasks - convert email to task & attach email

  • Thread starter Thread starter guiness_joe
  • Start date Start date
G

guiness_joe

Please find below code which converts email into a task, and pastes the email
text body into the task body and also pastes the email as attachment.

Problem:

1) the attached email is pasted at the end of the task body. I want it to be
pasted at the beginning of the task followed by the task body.
2) Can the task be automatically be saved into a personal folder?
3) Is there a way to autotype the categories list by typing the first few
letters?
4) Is there a way to auto fill calendar with the task items?

Public Sub AddCalendarEntry()
Const mailItem_c As String = "MailItem"
Dim OE As Outlook.Explorer ' olExp
Dim MI As Outlook.MailItem
Dim AI As Outlook.AppointmentItem
Dim TI As Outlook.TaskItem ' olTask
Dim olItem As Object

Set OE = Application.ActiveExplorer

'Abort sub if no item selected:
If OE.Selection.Count < 1 Then
MsgBox "Please select an already saved message before" & vbCrLf & _
"attempting to create an appointment or task" & vbCrLf & _
"with this button ...", vbInformation, "No message selected ..."
Exit Sub
'Abort sub if item selected is not a MailItem.
ElseIf TypeName(OE.Selection(1)) <> mailItem_c Then
MsgBox "You must select a mail item...", vbInformation, "Invalid
selection..."
Exit Sub
End If

Set MI = OE.Selection(1)
Beep
Select Case MsgBox("Is calendar entry an appointment?" & vbLf & _
"To Add Appointment (Yes) / To Add Task (No) / To Quit (Cancel)" & _
vbCrLf, vbYesNoCancel + vbQuestion, "Create an appointment or task
....")
Case vbYes 'If yes, create appointment
Set AI = Outlook.CreateItem(olAppointmentItem)
With AI
.Subject = MI.Subject

.Body = MI.Body
.Save
.Display
End With
Case vbNo
'If no, create task due with date of today
'and due date is tomorrow at 10:00 am

Set TI = Application.CreateItem(olTaskItem)

With TI

Dim cntSelection As Integer
cntSelection = OE.Selection.Count

For i = 1 To cntSelection

Set olItem = OE.Selection.Item(i)
TI.Attachments.Add olItem

Next

.Subject = MI.Subject
.Body = MI.Body
' .StartDate = Date
' .DueDate = Date + 1
' .ReminderTime = .DueDate & " 10:00"
.Save
.Display

End With

'Case vbCancel
' Exit Sub
End Select
End Sub
 
1) Outlook version?

2) Do you mean that you want to create a task in a folder other than your
default Tasks folder?

3) No.

4) Please explain what you mean by that.
 
Sue Mosher said:
1) Outlook version? 2003

2) Do you mean that you want to create a task in a folder other than your
default Tasks folder? Yes, the below task after being created saves into a Personal folder.

3) No.

4) Please explain what you mean by that.
Can appointments be made of the Incomplete Task items that exist in the task
folder?
 
1) the attached email is pasted at the end of the task body. I want it
Since you're using Outlook 2003, you can handle this by using the third
parameter of the Attachments.Add method, which sets the position of the
attachment, e.g.:

TI.Attachments.Add olItem, olEmbeddeditem, 1

"a Personal Folder" doesn't really answer the question, but let's assume you
wan to create a new item in a non-default folder. To do that, use the Add
method on the target folder's Items collection:

Set newItem = targetFolder.Items.Add("IPM.Task.YourFormName")

The message class parameter is optional.

To get a non-default folder, you need to walk the folder hierarchy using the
Folders collections or use a function that does that for you. For an
example, see:

http://www.outlookcode.com/codedetail.aspx?id=628 - uses a folder path
string
Can appointments be made of the Incomplete Task items that exist in the
task
folder?

Yes, using the same technique that you're already using to create a task --
create the task then assign values to its properties.

--
Sue Mosher, Outlook MVP
Author of Microsoft Outlook 2007 Programming:
Jumpstart for Power Users and Administrators
http://www.outlookcode.com/article.aspx?id=54
 
Thank you Sue!

1) TI.Attachments.Add olItem, olEmbeddeditem, 1
It attached an embedded picture of the email but not the email itself.

2) Your are right I have a personal folder which has Calendar and Task
inside it, which I wish to use. The Folder name is 01 Handover/Calendars, and
calendar folder name is Calendar and Task folder name is Task

5) If I create a couple of task form / templates, can I do all the previous
mentioned steps, i.e. paste email and email body at the end of the task
template body text? Also I want to have several Task forms / templates and
want to use one that suits the task function.

:

1) the attached email is pasted at the end of the task body. I want it
be pasted at the beginning of the task followed by the task body.
 
1) This is a task you're attaching to? Tasks don't handle embedded items
well, for reasons that have never been satisfactorily explained, IMO.

2) Then you need to follow the instructions I gave for using the Items.Add
method. You will not, however, be able to use the GetFolder() function,
because it assumes that there are no slashes in the folder name. Instead,
you'll need to start at the top of the folder hierarchy and walk down, using
the Folders collection of each MAPIFolder. If you need help with that, you
will need to give us the complete and exact path to the folder(s), starting
at the top of the hierarchy.

5) If you want to do all the same procedures in a custom form, then invoke
the custom form using the message class parameter in the Items.Add method.
 
Back
Top