如何通过vba操作microsoft project

有时候我们需要通过程序操纵MS Project(我们公司曾经需要将公司现有项目管理平台的任务导入到MS Project中)。项目类似于其他微软办公软件,Word和Excel,可以通过VBA进行操作。

下面是我用VB写的一个通用类。Ne给VBA打电话操纵MS项目。

这个类实现了创建和打开项目文件、添加任务、升级和降级任务以及保存项目等常见功能。

详情请看注意事项。

公共类项目

作者:孙041201

Dimmprjapp作为MSProject。“应用程序”是指VB.Net的msproject类库。

“Dim mRow As Integer = 0”记录项目中任务的行号。

公共子新()

mPrjApp =新的MSProject。application end Sub public Sub new project()

MPrjApp。FileNew()'创建一个新的项目文件结束子'项目可以保存为一个数据库。如果保存为数据库,我们可以通过ODBC直接打开这个项目文件。

当然,如果您熟悉数据库项目,也可以直接操纵数据库中的数据来修改项目文件。虽然微软已经提供了数据库结构的描述,但是并不是很详细,这方面的官方资料也相对较少。后面我会写一篇关于通过ODBC操纵项目数据库的文章。

Public Sub Open(ByVal ODBCName为字符串,ByVal ProjectName为字符串)

mPrjApp。文件打开(" <+odbc name+" & gt;\ "+project name)End SubPublic Sub new project(ByVal tmpFileName作为字符串)

dim template name As Object = tmpFileName

mPrjApp。FileNew(False,template name)End Sub public Sub save As(ByVal file path As String)

如果木卫一。文件存在(文件路径)

IO。file . Delete(file path)End IfmPrjApp。文件另存为(FilePath,MSProject。pjfile format . pjmpp)End Sub public Sub add task(ByVal TaskName为字符串,ByVal StartDate为字符串,ByVal FinishDate为字符串,可选的ByVal Resource为String = " ")

MPrjApp。选择任务字段(mRow,“名称”)

MPrjApp。SetTaskField("名称",任务名称)

MPrjApp。SetTaskField("开始时间",开始日期)

MPrjApp。SetTaskField("完成日期")

MPrjApp。SetTaskField("资源名",Resource)'这里的资源表示任务分配给谁,mrow = 1 end sub public sub degradation()。

mPrjApp。outline indent(1)End Sub public Sub Upgrade()

mPrjApp。outline outent(1)End Sub public Sub Close()

mPrjApp。FileCloseAll(MSProject。PjSaveType.pjDoNotSave)

MPrjApp。Quit()End SubEnd类这个类的例子(C#):

Project prj = new Project();

prj。new project(" D:\ Test \ Test . MPP ");