You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA无法在Outlook非默认日历创建约会问题求助

问题解决:将Outlook约会创建到指定子日历

核心问题原因

你当前用OutApp.CreateItem(olAppointmentItem)创建约会,这个方法默认会把约会放到默认日历里,和你之前获取的fldCalendar对象没有关联,所以不管怎么指定文件夹ID或子文件夹,都不会生效。

修正后的代码

把创建约会的方式改成从目标日历文件夹的Items集合中添加,而不是用全局的CreateItem。完整修正后的代码如下:

Sub Create_Appt_For_WinderJob()
    ActiveSheet.Cells(ActiveCell.Row, 1).Select

    ' 指定目标子日历"Winder_Related"
    Dim OutApp As Outlook.Application
    Dim nmsNameSpace As Outlook.Namespace
    Dim fldCalendar As Outlook.MAPIFolder
    Dim OutAppoint As Outlook.AppointmentItem
    Dim ItemsCal As Outlook.Items
    Dim SC As Range

    Set OutApp = Outlook.Application
    Set nmsNameSpace = OutApp.GetNamespace("MAPI")
    ' 获取默认日历下的Winder_Related子文件夹
    Set fldCalendar = nmsNameSpace.GetDefaultFolder(olFolderCalendar).Folders("Winder_Related")
    
    ' 关键修改:从目标文件夹的Items集合创建约会,而不是用CreateItem
    Set OutAppoint = fldCalendar.Items.Add(olAppointmentItem)

    Set SC = ActiveCell

    ' 以下保留你原本填充约会字段的代码即可
    ' 示例(根据你的需求替换):
    ' OutAppoint.Subject = SC.Offset(0, 1).Value
    ' OutAppoint.Start = SC.Offset(0, 2).Value
    ' OutAppoint.End = SC.Offset(0, 3).Value
    ' OutAppoint.Save ' 记得保存约会
End Sub

额外注意事项

  • 确保子日历名称"Winder_Related"拼写完全一致(包括大小写、空格),Outlook对文件夹名称区分大小写。
  • 如果你的默认日历属于某个非默认邮箱账户,需要先指定对应的账户文件夹,比如:
    ' 假设目标账户是第一个邮箱
    Set fldCalendar = nmsNameSpace.Folders("你的邮箱地址").Folders("日历").Folders("Winder_Related")
    
  • 最后一定要调用OutAppoint.Save来保存约会到指定日历。

内容的提问来源于stack exchange,提问作者DecoBoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 16:40:40