如何通过vba操作microsoft project
下面是我用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 ");