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

如何用VBA为MS Project Online企业版添加企业日历例外?

答:可以通过VBA给MS Project Online企业版的企业日历添加例外,以下是调整方案

核心说明

MS Project Online的企业日历存储在企业全局模板中,而非本地项目的基准日历或资源日历,你现有标准版的脚本需要针对性修改,才能操作企业级日历。

调整后的VBA脚本(批量添加10年公共假期)

这个脚本会连接到Project Online,打开企业全局模板,指定目标企业日历,批量生成10年的常见公共假期(可根据需求修改假期规则):

Sub AddEnterpriseCalendarExceptions()
    Dim pwaUrl As String
    Dim enterpriseGlobal As Project
    Dim enterpriseCal As Calendar
    Dim startYear As Integer, endYear As Integer
    Dim holidayDate As Date
    Dim y As Integer
    
    ' 替换为你的Project Online地址
    pwaUrl = "https://your-pwa-url.sharepoint.com/sites/pwa"
    
    ' 连接并签出企业全局模板
    Set enterpriseGlobal = Application.EnterpriseCheckOutGlobal
    If enterpriseGlobal Is Nothing Then
        MsgBox "无法打开企业全局模板,请检查权限或PWA地址"
        Exit Sub
    End If
    
    ' 指定要修改的企业日历名称(替换为实际名称)
    On Error Resume Next
    Set enterpriseCal = enterpriseGlobal.BaseCalendars("企业标准日历")
    On Error GoTo 0
    If enterpriseCal Is Nothing Then
        MsgBox "未找到指定的企业日历"
        Application.EnterpriseCheckInGlobal True ' 签回模板
        Exit Sub
    End If
    
    ' 设置10年的年份范围
    startYear = Year(Date)
    endYear = startYear + 9
    
    ' 批量添加固定日期假期(示例:元旦、圣诞节)
    For y = startYear To endYear
        ' 元旦(1月1日)
        holidayDate = DateSerial(y, 1, 1)
        enterpriseCal.Exceptions.Add Type:=1, Start:=holidayDate, Finish:=holidayDate, Name:="元旦"
        
        ' 圣诞节(12月25日)
        holidayDate = DateSerial(y, 12, 25)
        enterpriseCal.Exceptions.Add Type:=1, Start:=holidayDate, Finish:=holidayDate, Name:="圣诞节"
        
        ' 可继续添加其他固定假期,比如劳动节、国庆节
        ' holidayDate = DateSerial(y, 5, 1)
        ' enterpriseCal.Exceptions.Add Type:=1, Start:=holidayDate, Finish:=holidayDate, Name:="劳动节"
    Next y
    
    ' 签回并保存全局模板更改
    Application.EnterpriseCheckInGlobal True
    MsgBox "已成功添加10年公共假期到企业日历"
End Sub

关键注意事项

  1. 权限要求:执行脚本的账号需要拥有Project Online的企业全局模板编辑权限(通常为管理员或指定的全局编辑用户)。
  2. 日历名称:务必替换脚本中的"企业标准日历"为你实际要修改的企业日历名称。
  3. 浮动假期处理:如果有日期不固定的假期(如复活节、中秋节),需要额外编写日期计算逻辑后再添加。
  4. 测试建议:先在测试环境验证脚本,确认无误后再操作生产环境。

原有脚本的适配说明

你原本的标准版脚本针对的是本地项目的资源日历或基准日历,在企业版中操作企业级日历必须通过EnterpriseCheckOutGlobal打开全局模板,而非直接操作ActiveProject对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:15:31