Share via


Erstellen einer jährlichen Terminserie mit einem jährlichen Muster

Dieses Beispiel zeigt, wie ein Termin erstellt wird, dessen jährliches Serienmuster ein bestimmter Tag ist, z. B. der erste Montag im Juni.

Beispiel

Hinweis

Das folgende Codebeispiel ist ein Auszug aus Programming Applications für Microsoft Office Outlook 2007.

Wenn Sie einen jährlichen Termin erstellen möchten, der an einem bestimmten Tag der Woche in einen bestimmten Monat (z. B. am ersten Montag im Juni) stattfinden soll, müssen Sie YearNth-Serien verwenden. Um eine YearNth-Serie festzulegen, müssen Sie zunächst die RecurrenceType-Eigenschaft des RecurrencePattern-Objekts auf „olRecursYearNth“ festlegen. Legen Sie dann die DayOfWeekMask-Eigenschaft fest, um anzugeben, an welchem Tag der Woche der Termin wiederholt werden soll, und die Instanz-Eigenschaft, um das n-te Vorkommen an dem angegebenen Tag der Woche (z. B. am dritten Dienstag) in einem bestimmten Monat für das jährliche Muster anzugeben.

Wenn Sie mit Terminserien arbeiten, müssen Sie vorherige Verweise freigeben, neue Verweise auf das Terminserienelement abrufen, bevor Sie das Element öffnen oder bearbeiten, und diese Verweise freigeben, sobald Sie Ihre Änderungen abgeschlossen und gespeichert haben. Diese Vorgehensweise gilt für das sich wiederholende AppointmentItem-Objekt und alle Exception- oder RecurrencePattern-Objekte. Um einen Verweis in Visual Basic freizugeben, legen Sie dieses vorhandene Objekt auf „Nothing“ fest. Geben Sie in C# den Arbeitsspeicher für dieses Objekt explizit frei.

Auch nachdem Sie Ihren Verweis freigegeben und versucht haben, einen neuen Verweis abzurufen, zeigt Ihr neuer Verweis, wenn es noch einen aktiven Verweis (der von einem anderen Add-In oder Outlook aktiviert wurde) auf eines der obigen Objekte gibt, weiter auf eine veraltete Kopie des Objekts. Deshalb müssen Sie stets Ihre Verweise freigeben, sobald Sie mit dem Bearbeiten der Terminserie fertig sind.

Im folgenden Codebeispiel erstellt RecurringYearNthAppointment einen Termin mit einem YearNth-Serienmuster. RecurringYearNthAppointment erstellt zunächst eine Terminserie, indem ein AppointmentItem-Objekt erstellt wird. Als Nächstes wird das Serienmuster des Termins mithilfe der GetRecurrencePattern()-Methode abgerufen. Dann werden die folgenden RecurrencePattern-Eigenschaften festgelegt: RecurrenceType, DayOfWeekMask, MonthOfYear, Instance, Occurrences, Duration, PatternStartDate, StartTime und EndTime. Die MonthOfYear-Eigenschaft akzeptiert einen numerischen Wert von 1 bis 12, wobei jede Zahl den entsprechenden Monat darstellt. Nachdem die Eigenschaften festgelegt wurden speichert RecurringYearNthAppointment den Termin und zeigt ihn dann mit dem Muster „Tritt am ersten Montag des Monats Juni ab dem 1.6.2007 bis 6.6.2016 von 14:00 – 17:00 Uhr auf“.

Wenn Sie Visual Studio verwenden, um dieses Codebeispiel zu testen, müssen Sie der Microsoft Outlook 15.0-Objektbibliothekkomponente zuerst einen Verweis hinzufügen und die Outlook-Variable angeben, wenn Sie den Microsoft.Office.Interop.Outlook-Namespace importieren. Die using-Anweisung darf im Codebeispiel nicht direkt vor den Funktionen stehen, sondern muss vor der öffentlichen Class-Deklaration hinzugefügt werden. Die folgende Codezeile zeigt, wie Sie den Import und die Zuweisung in C# vornehmen.

using Outlook = Microsoft.Office.Interop.Outlook;
private void RecurringYearNthAppointment()
{
    Outlook.AppointmentItem appt = Application.CreateItem(
        Outlook.OlItemType.olAppointmentItem)
        as Outlook.AppointmentItem;
    appt.Subject = "Recurring YearNth Appointment";
    Outlook.RecurrencePattern pattern = appt.GetRecurrencePattern();
    pattern.RecurrenceType = Outlook.OlRecurrenceType.olRecursYearNth;
    pattern.DayOfWeekMask = Outlook.OlDaysOfWeek.olMonday;
    pattern.MonthOfYear = 6;
    pattern.Instance = 1;
    pattern.Occurrences = 10;
    pattern.Duration = 180;
    pattern.PatternStartDate = DateTime.Parse("6/1/2007");
    pattern.StartTime = DateTime.Parse("2:00:00 PM");
    pattern.EndTime = DateTime.Parse("5:00:00 PM");
    appt.Save();
    appt.Display(false);
}

Siehe auch