/ / Filtern von Outlook-Elementen mithilfe von C # - C #, Kalender, Ausblick, ms-office

Filtern von Outlook-Elementen mit C # - c #, Kalender, Outlook, MS-Office

Ich verwende das Office-Objektmodell, um mein Objekt abzurufenKalendereinträge aus Outlook. Ich möchte die Restrict () -Methode verwenden, um nur die Termine von heute zu erhalten. Ich möchte auch die einzelne Instanz aller wiederkehrenden Termine (d. H. Nicht alle Wiederholungen - nur die heute) - einschließen.

Mit dem folgenden Code bekomme ich viele (aber nicht alle) wiederkehrende Artikel wie Geburtstage unabhängig vom Datum. Ich bekomme auch verschiedene andere Termine - aber nicht die für heute.

Ich habe verschiedene Formate für das Datum ausprobiert, einschließlich 2013-07-25 00:00:00, ohne Glück. Ich habe das Netz recherchiert und versucht, Beispiele aus VBA-Skripts zu kopieren - kein Glück.

Ich schätze alle Ideen von anderen ", die dies getan haben.

var outlook = new Application();
var calendar = outlook.GetNamespace("MAPI").GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
DateTime today = DateTime.Today, tomorrow = today.AddDays(1);
const string DateFormat = "dd/MM/yyyy HH:mm";
string filter = string.Format("[Start] >= "{0}" AND [Start] < "{1}"", today.ToString(DateFormat), tomorrow.ToString(DateFormat));
var todaysAppointments = calendar.Items.Restrict(filter);
// todaysAppointments.IncludeRecurrences = true;
todaysAppointments.Sort("[Start]");

Antworten:

0 für die Antwort № 1

Ich habe den folgenden Code verwendet und er funktioniert einwandfrei. Ich verwende wahrscheinlich zu viel "IncludeRecurrences = false", aber es funktioniert;) Ich musste das tun, oder es wirkt komisch (ich denke, "IncludeRecurrences" vergleicht die Dinge anders)

Setzen Sie einfach den Kalender als ersten Parameter und pDateToRead als das gewünschte Datum. (Zum Beispiel)

var calendar = outlook.GetNamespace("MAPI").GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
var calendarItems = GetCalendarItemsOnDate(calendar, DateTime.Today);

Aktuelle Methode:

public static IEnumerable<Outlook.AppointmentItem> GetCalendarItemsOnDate(this Outlook.MAPIFolder pCalendarFolder, DateTime pDateToRead)
{
var filter = "( [Start] >= "" + pDateToRead.ToString("MM/dd/yyyy") + """ + " AND " + "  [End]  < "" +     pDateToRead.AddDays(1).ToString("MM/dd/yyyy") + "" )";
pCalendarFolder.Items.IncludeRecurrences = false;
var outlookCalendarItems = pCalendarFolder.Items.Restrict(filter);
outlookCalendarItems.IncludeRecurrences = false;

var allItem = string.Empty;
foreach (Outlook.AppointmentItem item in outlookCalendarItems)
{
if (item.IsRecurring)
{
continue;
}
yield return item;
}
}