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

如何通过VB从Excel创建带日历与文件名设置的MS Project文件

通过VB从Excel创建带自定义设置的MS Project文件

核心解决点

1. 指定生成的Project文件名

创建Project实例后,通过SaveAs方法直接指定保存路径和文件名,避免默认命名。

2. 配置日历参数

可修改标准日历,或创建自定义日历,设置工作时间、例外日期等规则。


完整VBA代码示例

首先需在Excel VBA编辑器中,通过工具→引用勾选Microsoft Project xx.x Object Library(对应你的Project版本)。

Sub CreateCustomProject()
    Dim projApp As MSProject.Application
    Dim newProj As MSProject.Project
    Dim projCal As MSProject.Calendar
    
    ' 创建Project应用实例(后台运行可加Visible:=False)
    Set projApp = New MSProject.Application
    projApp.Visible = True
    
    ' 新建空白项目
    Set newProj = projApp.Projects.Add
    
    ' --------------------------
    ' 1. 指定文件名并保存
    ' --------------------------
    Dim savePath As String
    savePath = "C:\YourFolder\自定义项目名称.mpp" ' 替换为实际路径
    newProj.SaveAs savePath
    
    ' --------------------------
    ' 2. 配置日历参数(示例:修改标准日历)
    ' --------------------------
    Set projCal = newProj.Calendars("标准")
    
    ' 设置工作日工作时间(周一至周五:9:00-12:00,13:30-18:00)
    With projCal.WeekDays(pjMonday)
        .Shift1.Start = #9:00:00 AM#
        .Shift1.Finish = #12:00:00 PM#
        .Shift2.Start = #1:30:00 PM#
        .Shift2.Finish = #6:00:00 PM#
    End With
    ' 复制周一设置到周二至周五
    projCal.WeekDays(pjTuesday) = projCal.WeekDays(pjMonday)
    projCal.WeekDays(pjWednesday) = projCal.WeekDays(pjMonday)
    projCal.WeekDays(pjThursday) = projCal.WeekDays(pjMonday)
    projCal.WeekDays(pjFriday) = projCal.WeekDays(pjMonday)
    
    ' 添加日历例外(比如国庆节放假)
    Dim calException As MSProject.CalendarException
    Set calException = projCal.Exceptions.Add(Name:="国庆节", Start:=#10/1/2024#, Finish:=#10/7/2024#)
    calException.DayWorking = False ' 设置为非工作日
    
    ' --------------------------
    ' 可选:导入Excel数据(按需添加)
    ' --------------------------
    ' newProj.Tasks.Add Name:="任务1"
    ' newProj.Tasks(1).Start = Date
    ' newProj.Tasks(1).Duration = "5d"
    
    ' 保存更改并退出
    newProj.Save
    projApp.Quit
    
    ' 释放对象
    Set calException = Nothing
    Set projCal = Nothing
    Set newProj = Nothing
    Set projApp = Nothing
End Sub

关键说明

  • 如果需要创建自定义日历而非修改标准日历,可使用projCal = newProj.Calendars.Add(Name:="自定义工作日历")
  • 若要后台静默生成,把projApp.Visible = True改为False
  • 路径需确保文件夹存在,否则会报错,可提前用Dir函数判断并创建文件夹

内容的提问来源于stack exchange,提问作者Виктор Попов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 18:52:12