Jaa


Creating an Outlook Appointment based on an Email Message

I've always wanted to do this:  I get an email message and I want to create an appointment from the the message.  It's a simple task and I found that this was one of the goals of Chandler in the book that I'm reading right now, Dreaming in Code by Scott Rosenberg.  Incidentally, I just met Scott at Scoble's Geek/Blogger dinner in San Francisco last week.  From the book, I learned that the software architecture that the Chandler team was using to accomplish this task was very complex.  I looked into the Outlook 2007 UI I did not find this feature.  Last week I visited a customer and the engineering manager there asked how to do this.  The beauty of Outlook is that it is programmable!  In about an hour, I was able to write a short VBA Macro that does the following:

  1. If the current item is an email, create a new appointment item
  2. Copy the categories, body, and subject
  3. Copy the attachments
  4. Add the sender as a meeting participant
  5. Add each email recipient as a meeting participant
  6.      Each To: participant will be a required
  7.      Each CC: or BCC: participant will be optional

I then added the macro to my quick launch bar for an Outlook message and it worked!

I have attached the macro for all of you to try out.

Enjoy,

Michael

5/24/2007: Updated macro to fix bug with copying attachments.

NewMeetingRequestFromEmail.bas

Comments

  • Anonymous
    May 17, 2007
    When I posted the simple macro to create an appointment from an email message , I got a message from

  • Anonymous
    May 23, 2007
    Silly question, but I'm new to macros.  How do I get from the script attachment to the quick launch bar?  Do I need to copy and paste the script to a txt file and drag that to the bar?  Or something else?  Thanks for any help you can offer.

  • Anonymous
    May 23, 2007
    Silly me. When I posted the macros to create Outlook appointments based on email messages and to schedule

  • Anonymous
    May 23, 2007
    djwriter, Here's an explanation of how to add a macro to Outlook: http://blogs.msdn.com/synergist/archive/2007/05/23/adding-a-vba-macro-to-outlook.aspx Michael

  • Anonymous
    May 24, 2007
    This works perfect, great job.

  • Anonymous
    June 02, 2007
    Hello, I'm new to macros, and I would lik te know if it is possible te rewrite teh script so that i can make a task of certan e-mails. Micha

  • Anonymous
    June 05, 2007
    Hello, Can you help me out ? I am looking to write a macro that takes the information of an outlook meeting and creates a word / mail meeting summery (using the information from the meeting document) thank you Jones

  • Anonymous
    June 14, 2007
    I'm tryng to modify your script to attach an "email" to the appointment, but with out success Can you help me? Thanks

  • Anonymous
    June 14, 2007
    I've just solved my problem here is the solution Set myAttachments = TaskRequest.Attachments myAttachments.Add app.ActiveInspector.CurrentItem,olEmbeddeditem, 1, email.Subject

  • Anonymous
    June 19, 2007
    Now that i've moved from outlook 2003 to 2007, my Getting Things Done add-in no longer works. Does anyone know how to create an Outlook task based on an email, which is one of the main things I relied on the add-in for?

  • Anonymous
    July 17, 2007
    Wonderful Macro!!  Been looking for something like this for a couple years and expected O2007 would have it.  Thanks for making me more efficient and expanding my VBA knowledge to Outlook. Great work!

  • Anonymous
    July 25, 2007
    I get an error when this macro runs.   Run time error '91'   Object bariable or with block variable not set the debuger stops at:   Set item = app.ActiveInspector.CurrentItem

  • Anonymous
    July 25, 2007
    Robert,

  1. Are you using Outlook 2007?
  2. What is the active inspector?  Is it the Message inspector? Michael
  • Anonymous
    July 28, 2007
    Not to make this over-simplified, but you can do the same thing by selected a message or several messages, and dragging them onto the "Calendar" item. This works in pretty much every version of Outlook including 2007. It won't make the e-mails as attachments, but it does copy the contents into the meeting notice.

  • Anonymous
    July 29, 2007
    The macro does the following in addition to the behavior seen by dragging the message to the calendar: Copy the categories Copy the attachments Add the sender as a meeting participant Add each email recipient as a meeting participant     Each To: participant will be a required     Each CC: or BCC: participant will be optional

  • Anonymous
    July 31, 2007
    I think I figured the earlier one out (just shows how much I have been waiting for something like this!). Accomplished it by changing the security settings (Tools->Macro->Secuirty->Programmatic Access). However, I have another problem. Since I have numerous filters set up, I normally have my Unread Mail window always open (in fact that is my default, not Inbox). I added your macro to the toolbar here, and tried to invoke it once I saw the message I want displayed in the reading pane. I did not click the message to open in a separate window. I get this error message: Run-time error '91'; Object variable or With block variable not set. However, if I have the message open in a separate window, I can invoke the Macro either from the Unread Mail window, or from this separate window without any issues. Is there any fix for this? thanks! rgds, bala

  • Anonymous
    August 04, 2007
    The comment has been removed

  • Anonymous
    August 04, 2007
    Any way to change this macro so it can run as a rule in Outlook 2K7 and have it use the emails .sendon as the start and end time so a reminder is triggered?

  • Anonymous
    August 04, 2007
    OK so I fixed my last question. Here is a hacked version of your code that you can use in a rule as a script. I will be using this for all email that I send to myself so I would get calendar reminders for the quick one liner reminder emails I send to myself. Sub NewMeetingRequestFromEmail(item As Outlook.MailItem)    Dim email As MailItem    Set email = item    Dim meetingRequest As AppointmentItem    Set meetingRequest = Application.CreateItem(olAppointmentItem)    meetingRequest.Body = email.Body    meetingRequest.Subject = email.Subject    meetingRequest.Start = email.SentOn    meetingRequest.End = email.SentOn    meetingRequest.ReminderSet = True    meetingRequest.ReminderMinutesBeforeStart = 1    meetingRequest.Save End Sub

  • Anonymous
    August 06, 2007
    Gary, Thanks for that little piece. It worked exactly as I wanted to! I have it in my Unread Mail and Quick Launch bar, so works everywhere. rgds, bala

  • Anonymous
    August 20, 2007
    Thanks mate, I've been looking for such a snippet code (only the attachment part). I transformed it to work with my own macro for making tasks.

  • Anonymous
    September 12, 2007
    Hi, Thanks for this useful technique. One question: How do I associate an email with an existing task? I would have expected to be able to drag and drop an email onto a task, but that doesn't work. Ideally, one should be able to select an email, click a button or a context-menu item, and select a task to associate the email to, in effect, attaching the email to the existing task.

  • Anonymous
    September 13, 2007
    Aaman, In Outlook 2007, I can do this in two ways: Attaching Item:

  1. Open the task for editing
  2. Select the Insert tab
  3. Press the Attach Item button (in the Include group)
  4. Select the item. Dragging An Item:
  5. Open the task for editing
  6. Drag the email icon into the body of the task
  • Anonymous
    October 23, 2007
    First, thanks, this gets me most of the way to where i need to go. I've been playing with this macro to try to see if I can get it to read the simple body to pull out names, dates and a subject to be used in the appointment but I'm not sure if the methods I'm using are correct. I've been trying to use the .IndexOf and Substring functions to cut up the string and define variables but I seem to have a mismatch with my variables. Here's the mess I've made, any help? Dim X As Integer Dim Y As Integer Dim name, reason, bodystring As String bodystring = meetingRequest.Body X = bodystring.IndexOf("#") X = X + 2 Y = bodystring.IndexOf("$") Y = Y - 2 name = bodystring.Substring(X, Y) X = "" X = Y + 4 Y = bodystring.IndexOf("!") - 2 meetingRequest.Start = bodystring.Substring(X, Y) X = "" X = Y + 4 Y = bodystring.IndexOf("?") - 2 meetingRequest.End = bodystring.Substring(X, Y) X = "" X = Y + 4 Y = bodystring.IndexOf("~") - 2 reason = bodystring.Substring(X, Y) With meetingRequest        .Subject = "" & name & " - " & reason & ""        .ReminderSet = False        .AllDayEvent = True EndWith The #, $, !, ? and ~ are just to help me mark and divide up the string. Been a while since I've tried to do this kind of stuff and I'm not sure if IndexOf and Substring even work with Outlook 2003. Anyone have any ideas?

  • Anonymous
    November 05, 2007
    Need to create buttons for: Permanently delete (without warning pop-up) Move to (specific folders) with one click action Macros? I don't know code but I may be able to figure out how to tweak one. Thanks!!!

  • Anonymous
    January 15, 2008
    Michael, I don't know how to "do" macros. but if you answer me I'll find someone who can help me. What I'm trying to do is to have outlook automatically make an appointment if i get a spacific email (these emails can be defined by words in their subject).The date can be found in the body of the email always following a unique name or it can be in the subject. The name of the appointment can be found the same way. the time can be "all day". and the catagory is given to the email through a simple rule I made when i get the email. ok that's about it. can you help? is this possible? Thank you, Katie

  • Anonymous
    January 31, 2008
    The comment has been removed

  • Anonymous
    February 07, 2008
    This is a bit crude, but it works for a specific layout of email that I get that has the appt, time and location in, I wanted to add the location to the subject line as well. Hope it helps    If LCase(sender.Address) = LCase("mysupplier@theirdomain.com") Then '      Create meetingRequest      Dim X As Integer      Dim Y As Integer      Dim startDay, startTime, endTime, postcode, bodystring As String      bodystring = meetingRequest.Body ' get meeting start day and time (line 7) preceded by "Appt Date:"      X = InStr(bodystring, "Appt Date:")      X = X + 11       startDay = Mid(bodystring, X, 10)      X = X + 14       startTime = Mid(bodystring, X, 5) ' set meeting end time (add 1 hour to the start time and watch out for 09h/19h)      Y = Mid(startTime, 2, 1)      If Y < 9 Then            Y = Y + 1            endTime = Mid(startTime, 1, 1) & Y & Mid(startTime, 3)         Else            Y = Mid(startTime, 1, 2)            Y = Y + 1            endTime = Y & Mid(startTime, 3)      End If ' get postcode use last bit of 12th line next line is a divider, followed by "Employed:" ' it can vay from 3 characters to 9 characters, and is always preceded by ", "      X = InStr(bodystring, "Employed:")      X = X - 75        postcode = Mid(bodystring, X, 9)        Y = InStr(postcode, ",")        If Y > 0 Then          postcode = Mid(postcode, Y + 1)        End If       postcode = UCase(Trim(postcode))       meetingRequest.Start = startDay & " " & startTime       meetingRequest.End = startDay & " " & endTime       meetingRequest.Subject = postcode & " - " & meetingRequest.Subject       meetingRequest.ReminderSet = False       meetingRequest.Categories = "Advent"    End If

  • Anonymous
    February 19, 2008
    I have been saving a lot of emails into a folder on AOL.  I was wondering if there was a way to write a macro (or script in aol) that would open the email and paste it to the bottom of a word document.  Any help you can provide? Thanks N Bill Sheff

  • Anonymous
    February 19, 2008
    I have been saving a lot of emails into a folder on AOL.  I was wondering if there was a way to write a macro (or script in aol) that would open the email and paste it to the bottom of a word document.  Any help you can provide? Thanks N Bill Sheff

  • Anonymous
    February 29, 2008
    This keeps making the same appointment for the same mail message for me.  I have Outlook 2003.

  • Anonymous
    March 01, 2008
    I wrote this macro for Outlook 2007.  I have not tested it for Outlook 2003. Michael

  • Anonymous
    March 13, 2008
    This is a cool macro, but did you know you can just drag the email to the calendar button, or to a specific date in the calendar in the to-do bar, and it'll create an appointment for you?

  • Anonymous
    March 13, 2008
    Oops -- just saw your response to a similar comment above.  That'll teach me. =)

  • Anonymous
    March 30, 2008
    excelent!! I don't know why outlook 2007 still does not do this?

  • Anonymous
    April 23, 2008
    Pffft, I can't get it to work, really. Not even a basic calander appointment. I just want a mail to be copied into a new calander appointment, not even to have all the dates and stuff set, but just simply that the subject is already prefiled and that it has the original e-mail.... Copied the scripts above, they didn't work for me. Tried fixing the code but it doesn't ever work :S Using Outlook 2007

  • Anonymous
    April 23, 2008
    Arg, I only know realize this only works when opening the message... sigh How can I get it to work from the preview pane? The adding of the correspondents is really neat tho :)

  • Anonymous
    April 23, 2008
    Last year I created a simple macro for Microsoft Outlook 2007 that automatically created an appointment

  • Anonymous
    September 03, 2008
    Thanks!  This is perfect.  I added a flag on mine to categorize e-mails I've made into appointments.

  • Anonymous
    September 25, 2008
    I made a couple of changes to the macro:

  1. Add the current eMail as an attachment to the appointment rather than copying the body text.    ' Change this to add the eMail as an attachment to the appointment    'meetingRequest.Body = email.Body    meetingRequest.Body = "As referenced in the attached:" & vbCrLf    meetingRequest.Attachments.Add email, olEmbeddeditem, 1, email.subject
  2. Allow for the selected eMail to be one that is in the "Sent Items" folder.    ' If the selected eMail is in "Sent Items" then the    ' email.SenderEmailAddress is an empty string    ' So do not attempt to add it to the meetingRequest as it will fail    If LCase(email.SenderEmailAddress) <> "" Then     Set recipient = meetingRequest.Recipients.Add(email.SenderEmailAddress)     recipient.Resolve    End If
  • Anonymous
    October 08, 2008
    this is cool... but is it possible to save this to a different calendar besides mine. i have another account attached to my email and i want it to save to my second account's calendar which is also shared so everybody can see thanks

  • Anonymous
    October 24, 2008
    Did anyone ever modify this to let you chose a calendar to save the appointment to a different calendar?  

  • Anonymous
    November 07, 2008
    Love the Macro, but when I use it on an email that has html and graphics, it moves over into the appointment as all text. I am using OL Enterprise 2007. TIA

  • Anonymous
    November 08, 2008
    I wanted this code so much....

  • Anonymous
    December 02, 2008
    I have been looking for something that links emails to appointments, and appointments to tasks.  This macro has gotten me halfway there. Thank you!  Of course, I must ask, is there something that would get me the rest of the way there?

  • Anonymous
    January 09, 2009
    The comment has been removed

  • Anonymous
    April 13, 2009
    Thanks! This is just what I needed. I don't understand why Microsoft doesn't include this function by default.

  • Anonymous
    May 06, 2009
    This is all great and new to me. I need some help creating a macro based on an email received. On the body of the email, I have the option to accept or decline a project request/order. I would like to create a macro that will allow my outlook to accept each order as it arrives by

  1. automatically selecting accept
  2. log in to the system using the required username and password
  3. complete the acceptance process in the project system HELP!!!!!!
  • Anonymous
    June 08, 2009
    The comment has been removed

  • Anonymous
    June 08, 2009
    Worked perfectly in Outlook 2003 after deleting these lines:    Set recipient = meetingRequest.Recipients.Add(email.SenderEmailAddress)    recipient.Resolve Thanks!

  • Anonymous
    July 13, 2009
    or you could just drag the email to the outlook icon.  Works perfectly every time. http://blogs.bnet.com/businesstips/?p=1207

  • Anonymous
    August 11, 2009
    It is amazing how you can find almost anything you are looking for these days on the web. Thanks Mike for putting this togther. It saved my day.

  • Anonymous
    August 13, 2009
    THANKS. This is something I've wanted in Outlook for a long time. It seems like such a natural feature for Outlook, I don't know why it isn't included already. I'm inspired to write some macros for other functionality I'd like in Outlook and Office (it'll be great for when I'm bored at work because it will look like I'm doing my actual job :D ). I also found this tip "How to turn an Outlook message into an appointment or a task" at http://blogs.techrepublic.com.com/msoffice/?p=281 Basically you just drag the email from the Inbox (or folder view) to the Calendar shortcut and it creates a new message -- atleast in Outlook 2007, not sure about older versions. So I guess this functionality is already included in Outlook, but I think that your solution is a little bit better. Your solution copies any attachments and adds the message recipients to the appointment. The one other thing that your solution does, which I think is the most important, which the drag/drop functionality doesn't do is you can add a button to the Quick Lauch bar in the email message -- the reason this is so important IMHO is that the workflow is better. If you have a message opened and you want to create an appointment from it, then you can do it from the same window without have to go back to the main window and drag/drop the messages you're reading. I think this is a big productivity plus. Also your macro solution can be more customized to one's particular needs and multiple versions can be made for different needs -- for example, maybe the same conference room is always used, you always invite the same people, or you want to categorize it. Thanks again!

  • Anonymous
    November 22, 2009
    Hi, Do any of y'all know of a macro that will create a "Business Contact" from an e-mail? When I right-click, I only have the option to save the contact to Outlook Contacts - which I'm not using - I have everything stored in BCM 2007. Please help! Annie

  • Anonymous
    January 05, 2010
    I'm not sure if it is only me but, when I use the macro it does not attach the original emails attachments to the invitation. Anybody else have the same problem (or solution/explanation)? Thanks in advance.

  • Anonymous
    February 11, 2010
    Help.  Unable to get this code to work on Office 2K7.  Keep getting a runtime error '287'.  Applicaiton defined or object defined error.  

  • Anonymous
    April 08, 2010
    Thanks!!! My work just made the move from Lotus Notes to Outlook and I was really frustrated at the inability to make appointments from email. The macro worked like a charm! Cheers!

  • Anonymous
    June 14, 2010
    You dont need to write the macro or anything. just drag the message to the calendar  tab on the navigation side bar. it will open as an appointment for you where you nedd to add  date and invitees.

  • Anonymous
    August 10, 2010
    Really useful and a great macro. Thanks!

  • Anonymous
    September 20, 2010
    you can drag the email from your inbox and drop it on the calendar pane and it should create an appointment. i guess the macro discussed in this article does a lot more like sending the appointment to the sender etc..but for the very basic needs the drag and drop should work....just thought i'd share

  • Anonymous
    September 23, 2010
    Thanks.  This should be normal funtionality in Outlook.  Wonderful macro.

  • Anonymous
    October 04, 2010
    As of October 2010, this macro still functions in Outlook 2003.  Thanks a lot!

  • Anonymous
    January 02, 2011
    The comment has been removed

  • Anonymous
    January 21, 2011
    That is awesome... I wish I'd searched for this macro earlier!! Is there anything out there where I can change whose calendar it comes from? I support quite a few different people and create calendar invites all day. Thanks!!

  • Anonymous
    February 10, 2011
    Hi, I have to account in outlook 2003 When I sent email I have to change my account from default to non default and then I am able to send email form second account I am looking for VBScript to create a macro button that when I click on it will open new message and should choose the non default account I mean second account Thanks A lot

  • Anonymous
    March 15, 2011
    Here's HOW TO MAKE IT WORK IN OFFICE 2007 (at least the solution that worked for me) The problem appeared to be an issue with security settings.  Here is how I fixed it.

  1.  Follow the instructions on how to add a VBA Macro that Synergist posted: blogs.msdn.com/.../adding-a-vba-macro-to-outlook.aspx
  2. In Outlook, go to Tools -> Macro ->Security.  There are 4 choices: a.  No warnings and disable all macros. b. Warnings for signed macros; all unsigned macros are disabled. c.  Warnings for all macros. d.  No security check for macros. If you have (a) selected, this will not work no matter what because macros are disabled. You have to choose (b) (c) or (d).   If you select (c) or (d), no need to go further.  The macro will work, but your security settings are lax and vulnerable.  I don't recommend having your Outlook security settings here, but it's up to you. I personally have it set to (2) (Warnings for signed macros; all unsigned macros are disabled).  In this case, move on to the rest of the steps.
  3.  You're going to have to create a certificate for your Macro. Find the "Selfcert.exe" file on your computer.  It should be located: Program FilesMicrosoft OfficeOffice12 or Program FilesMicrosoft OfficeOffice11
  4.  Run the "selfcert.exe" file.  Give your certificate a name.  Go ahead and name it after yourself, after your macro, after your dog...
  5.  Go back to Outlook.
  6.  Tools ->Macros -> Visual Basic Editor   (or just hit ALT+F11)
  7.  On the Project window, on the left side, find your macro.  It should be under "Modules" if you followed Step 1.  Select your macro.
  8. Go to  Tools -> Digital Signature
  9.  Under "sign as" select "choose."  You should see your Certificate that you created.  Select OK, OK.  Close the Visual Basic Editor and hit "save" if it prompts you. Hope this helps those Outlook 2007 users trying to create an outlook appointment based on an email message using the NewMeetingRequestFromEmail.bas macro. NOTE:  For some reason, the macro doesn't work from the "main" email screen.  It only works when you double-click and open an email, THEN run the macro.  When I run it from the Outlook mail screen (with the mail previews and all that), it doesn't work.
  • Anonymous
    March 16, 2011
    The comment has been removed

  • Anonymous
    May 17, 2011
    You can actually just drag and drop your email into Calendar folder and that will have same effect

  • Anonymous
    August 18, 2011
    If you drag an email to the date on the calendar to the right it sets a new appointment for that date. You just have to adjust the time.

  • Anonymous
    September 09, 2011
    Yes, you can drag and drop if the email isn't open, but I think the aim of the macro is to take an open email and turn it into an appointment...something Macs do very simply. One of the few things I like about Macs.

  • Anonymous
    March 16, 2012
    Thanks! Works like a breeze! Have been copying email addresses around for way too long!

  • Anonymous
    May 07, 2012
    Great job!  Appreciate your hard work!  Using it and loving it.

  • Anonymous
    September 04, 2012
    This is awesome. Unbeliavable how MS didn't make this a native feature. Many thanks!

  • Anonymous
    April 16, 2013
    Just had an email I wanted to convert to a meeting. Found many entries in google for the same task. This one was on top of the search list. Downloaded BAS and imported into my Outlook VBA module. I am using Outlook 2007 with those Quick Toolbars... I found out that the macro works on the active opened email, so it makes sense to put the macro into the quick toolbar of the opened email. Works well. Once appointment item appears, one needs to click Appointment/Invite Attendees to make "Send" button appear. After that the appointment can be sent to the team.

  • Anonymous
    June 19, 2013
    Thanks for this! I modified it slightly so that the whole email gets attached (attachments included) rather than copying the text - I find this cleaner, as it preserves formatting etc. Also made it so that you don't have to click the Invite Attendees button to convert to a Meeting Invite - this step is now included in the macro, so you can just hit send. And I added two separate calling procedures -- one that picks up the current email from the reading pane, and one that uses an open email. Just add the appropriate shortcut on the respective toolbars and you're set to go: (I preserved original code in comments, so you can revert back to that functionality if you prefer.)

  • Anonymous
    June 19, 2013
    Option Explicit Dim item As Object Sub NewMeetingReadingPane()    Set item = Application.ActiveExplorer.Selection(1)    NewMeetingRequestFromEmail End Sub Sub NewMeetingOpenEmail()    Set item = Application.ActiveInspector.CurrentItem    NewMeetingRequestFromEmail End Sub ' Create a New Meeting request from an email ' Written by Michael S. Scherotter (mischero@microsoft.com) ' 1. If the current item is an email, create a new appointment item ' 2. Copy the categories, body, and subject ' 3. Copy the attachments ' 4. Add the sender as a meeting participant ' 5. Add each email recipient as a meeting participant ' 6.    Each To: participant will be required ' 7.    Each CC: or BCC: participant will be optional Sub NewMeetingRequestFromEmail()    Dim app As New Outlook.Application    'Dim item As Object    'Set item = app.ActiveInspector.CurrentItem    'Set item = Application.ActiveExplorer.Selection(1)    If item.Class <> olMail Then Exit Sub    Dim email As MailItem    Set email = item    Dim meetingRequest As AppointmentItem    Set meetingRequest = app.CreateItem(olAppointmentItem)    meetingRequest.Categories = email.Categories    'meetingRequest.Body = email.Body    meetingRequest.Subject = email.Subject    meetingRequest.Attachments.Add item, olEmbeddeditem '    Dim attachment As attachment '    For Each attachment In email.Attachments '        CopyAttachment attachment, meetingRequest.Attachments '    Next attachment    Dim recipient As recipient    Set recipient = meetingRequest.Recipients.Add(email.SenderEmailAddress)    recipient.Resolve    For Each recipient In email.Recipients        RecipientToParticipant recipient, meetingRequest.Recipients    Next recipient    meetingRequest.MeetingStatus = olMeeting    Dim inspector As inspector    Set inspector = meetingRequest.GetInspector    'inspector.CommandBars.FindControl    inspector.Display End Sub Private Sub RecipientToParticipant(recipient As recipient, participants As Recipients)    Dim participant As recipient    If LCase(recipient.Address) <> LCase(Session.CurrentUser.Address) Then        Set participant = participants.Add(recipient.Address)        Select Case recipient.Type        Case olBCC:            participant.Type = olOptional        Case olCC:            participant.Type = olOptional        Case olOriginator:            participant.Type = olRequired        Case olTo:            participant.Type = olRequired        End Select        participant.Resolve    End If End Sub Private Sub CopyAttachment(source As attachment, destination As Attachments)    On Error GoTo HandleError    Dim filename As String    filename = Environ("temp") & "" & source.filename    source.SaveAsFile (filename)    destination.Add (filename)    Exit Sub HandleError:    Debug.Print Err.Description End Sub

  • Anonymous
    August 31, 2013
    There isn't a way to do this in Outlook 2011 for Mac users, I looked around for a bit and found a great program: "Appointment from Message for Outlook 2011 Mac" www.logicitc.com/products

  • Anonymous
    November 20, 2013
    Open your calendar in a new Outlook window (right click, open in new window) and just drag the email into the calendar. Bingo!

  • Anonymous
    April 06, 2014
    Unbelieveable that this feature is still missing in the so called "leading" PIM application. No wonder that it is so easy for other apps to gain market share.

  • Anonymous
    April 21, 2014
    Wow, can't believe Microsoft has not provided a simple solution for end users.  We're moving from Lotus Notes to Outlook/Exchange and many of our people want a simple way to copy email to their calendar. This has been a Notes feature since forever.

  • Anonymous
    February 09, 2015
    this simply emphasises the limitations, the paucity of outlook... having to use VBA / Macros to achieve common objectives... e.g. create an event from an email, no unified inbox, right click an email for reply - stone-age tech

  • Anonymous
    June 14, 2016
    Hi Michael,is it possible to paste the full code? I am unable to open the .bas file.Thanks!

  • Anonymous
    July 11, 2016
    Thanks so much for this code. It worked beautifully!