| Scalabium Software | |
| Knowledge for your independence'. | |
|  Home  Delphi and C++Builder
        tips | 
| #128: How can I create an appointment in MS Outlook? | 
| 
 | Today I want to continue a serie of tips for MS Outlook automatization from Delphi. If you want to create a new appointment, you can use a code sample below: uses ComObj;
procedure CreateNewAppointment;
const
  olAppointmentItem = $00000001;
  olImportanceLow = 0;
  olImportanceNormal = 1;
  olImportanceHigh = 2;
  {to find a default Contacts folder}
  function GetCalendarFolder(folder: OLEVariant): OLEVariant;
  var
    i: Integer;
  begin
    for i := 1 to folder.Count do
    begin
      if (folder.Item[i].DefaultItemType = olAppointmentItem) then
        Result := folder.Item[i]
      else
        Result := GetCalendarFolder(folder.Item[i].Folders);
      if not VarIsNull(Result) and not VarIsEmpty(Result) then
        break
    end;
  end;
var
  outlook, ns, folder, appointment: OLEVariant;
begin
  {initialize an Outlook}
  outlook := CreateOLEObject('Outlook.Application');
  {get MAPI namespace}
  ns := outlook.GetNamespace('MAPI');
  {get a default Contacts folder}
  folder := GetCalendarFolder(ns.Folders);
  {if Contacts folder is found}
  if not VarIsNull(folder) and not VarIsEmpty(folder) then
  begin
    {create a new item}
    appointment := folder.Items.Add(olAppointmentItem);
    {define a subject and body of appointment}
    appointment.Subject := 'new appointment';
    appointment.Body := 'call me tomorrow';
      {location of appointment}
      appointment.Location := 'room 3, level 2';
    {duration: 10 days starting from today}
    appointment.Start := Now() + 0.05;
    appointment.End := Now()+10; {10 days for execution}
    appointment.AllDayEvent := 1; {all day event}
    {set reminder in 20 minutes}
    appointment.ReminderMinutesBeforeStart := 20;
    appointment.ReminderSet := 1;
    {set a high priority}
    appointment.Importance := olImportanceHigh;
    {add a few recipients}
    appointment.Recipients.Add('person1@domain.com');
    appointment.Recipients.Add('person2@domain.com');
    {change an organizer name}
    appointment.Organizer := 'organizer@domain.com';
    {to save an appointment}
    appointment.Save;
    {to display an appointment}
    appointment.Display(True);
    {to print a form}
    appointment.PrintOut;
  end;
  {to free all used resources}
  folder := UnAssigned;
  ns := UnAssigned;
  outlook := UnAssigned
end;
 | 
 | 
|       | Copyright© 1998-2025, Scalabium
        Software. All rights reserved. |