1

我正在使用 VSTO for Outlook 2007。
访问日历中的约会时,我希望查看所有重复 - 不仅是系列主要项目。

我的代码如下

var calendarFolder = Globals.TestAddin.Application.GetNamespace("MAPI").GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
var outlookCalendarItems = calendarFolder.Items;
outlookCalendarItems.IncludeRecurrences = includeRecurring;

var appointmentItems = outlookCalendarItems.Cast<AppointmentItem>();
foreach ( var appointmentItem in appointmentItems )
{
  var item = appointmentItem;
  this.LogBox.AppendText(item.Subject);
}

它显示所有正常项目、所有系列主项目,但没有计算的系列约会。
示例:它将我母亲 1949 年 10 月的生日显示为重复项目,但她在 1950 年、1951 年...等之后的生日都没有。

我究竟做错了什么?

感谢您的想法!
萨沙

4

2 回答 2

2

添加一行就可以了:

outlookCalendarItems.Sort("[Start]");
于 2011-07-19T06:32:00.053 回答
0

当在日期之间包含没有“查找”的重复时,此代码有可能成为一个永恒的循环。

这是因为它会为它可以找到的每个匹配项创建一个“appointmentItem”。如果有没有设置重复结束日期的重复日历项目,则此循环将继续为每次出现(永远)创建“约会项目”。

要解决此问题,您需要限制找到的结果,请参阅下文如何限制结果。:

http://msdn.microsoft.com/en-us/library/office/dd469461(v=office.12).aspx

Set currentAppointment = myAppointments.Find("[Start] >= """ & _
        tdystart & """ and [Start] <= """ & tdyend & """")
于 2014-03-07T16:39:47.623 回答