【问题标题】:Get all calendars from Outlook using Excel VBA使用 Excel VBA 从 Outlook 获取所有日历
【发布时间】:2015-10-02 22:10:08
【问题描述】:

我想通过 VBA 使用 Excel 文件从当前 Outlook 会话中读取所有可用的非共享日历。

我加载了默认日历:

Set Calendar = outApp.GetNamespace("Mapi").GetDefaultFolder(9)

我似乎通过在 VBA 编辑器的本地变量视图中手动浏览 Outlook 会话对象来找到可用的日历。到达那里的路径(通过所有会话、文件夹和项目层次结构)对于每个用户来说显然是不同的。所以我目前最好的解决方案是爬取整个对象,直到找到一个有效的日历。有更好的解决方案吗?

我的目标是识别当前 Outlook 会话中的所有可用日历,并让用户选择在哪个日历中添加新约会。

我使用以下代码添加约会:

Public Sub AddOutlooktermin(subject As String, _
                        startDateTime As Date, _
                        endDateTime As Date, _
                        body As String, _
                        location As String, _
                        allDayEvent As Boolean, _
                        reminderMinutes As Integer, _
                        setReminder As Boolean, _
                        busyStatus As Integer _
                        )
Dim outApp As Object, apptoutapp As Object

Set outApp = CreateObject("Outlook.Application")
Set apptoutapp = outApp.CreateItem(1) 'olAppointmentItem)
With apptoutapp
    .Start = startDateTime
    .End = endDateTime
    .subject = subject
    .body = body
    .location = location
    .allDayEvent = allDayEvent
    .reminderMinutesBeforeStart = reminderMinutes
    .ReminderSet = setReminder
    .busyStatus = busyStatus
    .Categories = "#Urlaub"
    .importance = 2
    .Save
End With
Set apptoutapp = Nothing
Set outApp = Nothing
End Sub

【问题讨论】:

    标签: excel vba outlook calendar


    【解决方案1】:

    您可以在 Outlook 中文件夹树的任何位置创建日历文件夹。使用 DefaultItemType 属性在 Outlook 中查找日历文件夹,它从 OlItemType 枚举中返回一个常量,指示文件夹中包含的默认 Outlook 项目类型。如果是日历,您应该获得 olAppointmentItem 值。

    您也可以使用命名空间类的GetDefaultFolder 方法来获取一个Folder 对象,该对象代表当前配置文件所请求类型的默认文件夹;例如,获取当前登录用户的默认日历文件夹。

    Sub ChangeCurrentFolder()  
     Dim myNamespace As Outlook.NameSpace 
     Set myNamespace = Application.GetNamespace("MAPI")  
     Set Application.ActiveExplorer.CurrentFolder = _  
     myNamespace.GetDefaultFolder(olFolderCalendar)  
    End Sub
    

    然后遍历所有子文件夹。

    Store 类也提供了GetDefaultFolder 方法,它返回一个Folder 对象,该对象表示存储中的默认文件夹,该对象的类型由FolderType 参数指定。此方法类似于 NameSpace 对象的 GetDefaultFolder 方法。不同之处在于,此方法获取与帐户关联的交付存储上的默认文件夹,而 NameSpace.GetDefaultFolder 返回当前配置文件的默认存储上的默认文件夹。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-02
      • 2019-01-19
      • 1970-01-01
      • 2018-08-29
      • 2022-01-10
      • 1970-01-01
      相关资源
      最近更新 更多