通过电子邮件发送Outlook日历,更改详细程度的脚本?

时间:2019-03-27 06:19:27

标签: vba outlook outlook-vba

我在https://www.crestwood.com/2018/08/17/automating-outlook-calendar-to-send-daily-agenda/上找到了一个脚本。这可行,但是我无法控制日历的详细信息。或更正确地说,我不知道如何发送会议主题和位置

此代码有办法吗?还是可以通过其他方式解决? 在Outlook中手动执行此操作时,它称为“有限的详细信息”-这是我想要的结果。

我可以在0、1、2之间更改常数:olFreeBusyAndSubject。但是这些都不返回我想要的结果。它们导致(仅看到忙/闲,仅看到主题,包括事件描述的完整详细信息)。我不需要完整的详细信息,因为它们可能是我不希望在辅助电子邮件中显示的敏感信息。

' -------------------------------------------------
' Modify this \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Const myEmailAddress = "some@email.com"

Const includePrivateDetails = TRUE

Const howManyDaysToDisplay = 1

' Modify this /////////////////////////////////////

' -------------------------------------------------

Const olCalendarMailFormatDailySchedule = 0

Const olFreeBusyAndSubject = 2

' Const olFullDetails = 1

Const olFolderCalendar = 9

SendCalendar myEmailAddress, Date, (Date + (howManyDaysToDisplay - 1))

Sub SendCalendar(strAdr, datBeg, datEnd)

Dim olkApp, olkSes, olkCal, olkExp, olkMsg

Set olkApp = CreateObject("Outlook.Application")

Set olkSes = OlkApp.GetNameSpace("MAPI")

olkSes.Logon olkApp.DefaultProfileName

Set olkCal = olkSes.GetDefaultFolder(olFolderCalendar)

Set olkExp = olkCal.GetCalendarExporter

With olkExp

.CalendarDetail = olFreeBusyAndSubject

.IncludePrivateDetails = includePrivateDetails

.RestrictToWorkingHours = False

.StartDate = datBeg

.EndDate = datEnd

End With

Set olkMsg = olkExp.ForwardAsICal(olCalendarMailFormatDailySchedule)

With olkMsg

.To = strAdr

.Send

End With

Set olkCal = Nothing

Set olkExp = Nothing

Set olkMsg = Nothing

olkSes.Logoff

Set olkSes = Nothing

Set olkApp = Nothing

End Sub

如所描述的,期望的结果是通过电子邮件发送VBA脚本(或其他自动方式)发送“受限详细信息” -Outlook日历。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

.CalendarDetail = olFreeBusyAndSubject中,将olFreeBusyAndSubject替换为olFullDetails

要发现此问题,我使用了Bing并搜索了“ Outlook CalendarDetail”。我发现这是一种发现属性允许值的简便方法。