使用 VBA 验证 2 个 outlook 会议之间是否存在冲突

Verify if there are conflicts between 2 outlook meeting using VBA

我目前正在为 Outlook 创建一个宏,以创建从特定日期开始的会议。

我的宏可以创建、修改、删除会议。

我想在创建会议时检查会议之间是否存在冲突。

我试过AppointmentItem.Conflicts属性,但没有什么好的结果。

感谢您的帮助。

D

您可以使用Recipient.FreeBusy方法为收件人提供returnsfree/busy信息。以下 VBA 示例 returns 一串 free/busy 信息,每小时一个字符(完整格式)。

Set myRecipient = myNameSpace.CreateRecipient("Nate Sun") 
myFBInfo = myRecipient.FreeBusy(#02/05/2022#, 60, True)

要获取当前用户的信息,您可以使用 NameSpace.CurrentUser property which returns the currently logged-on user as a Recipient object,因此可以调用 FreeBusy 方法。

请注意,对于 Exchange 帐户,您可能会发现 ExchangeUser.GetFreeBusy 方法很有用。它 returns 一个字符串,表示 ExchangeUser 从指定日期午夜开始的 30 天内的可用性。

Sub GetManagerOpenInterval() 
 Dim oManager As ExchangeUser 
 Dim oCurrentUser As ExchangeUser 
 Dim FreeBusy As String 
 Dim BusySlot As Long 
 Dim DateBusySlot As Date 
 Dim i As Long 
 Const SlotLength = 60 
 'Get ExchangeUser for CurrentUser 
 If Application.Session.CurrentUser.AddressEntry.Type = "EX" Then 
 Set oCurrentUser = _ 
 Application.Session.CurrentUser.AddressEntry.GetExchangeUser 
 'Get Manager 
 Set oManager = oManager.GetExchangeUserManager 
 If oManager Is Nothing Then 
 Exit Sub 
 End If 
 FreeBusy = oManager.GetFreeBusy(Now, SlotLength) 
 For i = 1 To Len(FreeBusy) 
 If CLng(Mid(FreeBusy, i, 1)) = 0 Then 
 'get the number of minutes into the day for free interval 
 BusySlot = (i - 1) * SlotLength 
 'get an actual date/time 
 DateBusySlot = DateAdd("n", BusySlot, Date) 
 'To refine this function, substitute actual 
 'workdays and working hours in date/time comparison 
 If TimeValue(DateBusySlot) >= TimeValue(#8:00:00 AM#) And _ 
 TimeValue(DateBusySlot) <= TimeValue(#5:00:00 PM#) And _ 
 Not (Weekday(DateBusySlot) = vbSaturday Or _ 
 Weekday(DateBusySlot) = vbSunday) Then 
 Debug.Print oManager.name & " first open interval:" & _ 
 vbCrLf & _ 
 Format$(DateBusySlot, "dddd, mmm d yyyy hh:mm AMPM") 
 Exit For 
 End If 
 End If 
 Next 
 End If 
End Sub

您也可以尝试获取在特定时间间隔内开始或结束的所有会议。 Find/FindNextRestrict 方法可以帮助完成此类任务。在以下文章中阅读更多关于它们的信息: