如何通过VBA操纵Microsoft Project

原创 2006年06月12日 22:18:00

有时我们需要通过程序来操纵MS Project(我们公司曾需要将公司已有的项目管理平台中的任务导入MS Project),Project与其他的微软Office软件,Word、Excel类似,都可通过VBA来对其操作。

下面是我通过VB.Ne写得t调用VBA操纵MS Project的一个通用类。
该类实现了创建|打开Project文件,添加任务,升级|降级任务,保存Project等常用功能。

详情请看注释。

Public Class Project
    '041201
    Dim mPrjApp As MSProject.Application'在VB.Net中引用MSProject类库
    Dim mRow As Integer = 0'记录Project中任务的行号

    Public Sub New()
        mPrjApp = New MSProject.Application
    End Sub

    Public Sub NewProject()
        mPrjApp.FileNew()'新建一个Project文件
    End Sub

    'Project可以另存为一个数据库,如果存储为数据库,我们可以通过ODBC来直接打开这个Project文件
    '当然如果你对Project这个数据库比较熟悉,也可以直接操数据库中的数据来实现对Project文件的修改,微软虽然提供了数据库的结构说明,但不是很详尽,这方面的官方资料相对很少。后续我将写一篇关于通过ODBC操纵Project数据库的文章。
    Public Sub Open(ByVal ODBCName As String, ByVal ProjectName As String)
        mPrjApp.FileOpen("<" + ODBCName + ">/" + ProjectName)
    End Sub

    Public Sub NewProject(ByVal tmpFileName As String)
        Dim TemplateName As Object = tmpFileName
        mPrjApp.FileNew(False, TemplateName)
    End Sub

    Public Sub SaveAs(ByVal FilePath As String)
        If IO.File.Exists(FilePath) Then
            IO.File.Delete(FilePath)
        End If
        mPrjApp.FileSaveAs(FilePath, MSProject.PjFileFormat.pjMPP)
    End Sub

    Public Sub AddTask(ByVal TaskName As String, ByVal StartDate As String, ByVal FinishDate As String, Optional ByVal Resource As String = "")
        mPrjApp.SelectTaskField(mRow, "名称")
        mPrjApp.SetTaskField("名称", TaskName)
        mPrjApp.SetTaskField("开始时间", StartDate)
        mPrjApp.SetTaskField("完成时间", FinishDate)
        mPrjApp.SetTaskField("资源名称", Resource)'这里的资源表示将任务分配给谁
        mRow = 1
    End Sub

    Public Sub Degrade()
        mPrjApp.OutlineIndent(1)
    End Sub

    Public Sub Upgrade()
        mPrjApp.OutlineOutdent(1)
    End Sub

    Public Sub Close()
        mPrjApp.FileCloseAll(MSProject.PjSaveType.pjDoNotSave)
        mPrjApp.Quit()
    End Sub
End Class

该类使用例子(C#):
    Project prj = new Project();
    prj.NewProject("D:/Test/Test.mpp");
    prj.AddTask("任务一","2004-08-09","2004-09-09","小明");
    prj.SaveAs("D:/Test/Test.mpp");
    prj.Close();

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Zip and Unzip from Microsoft Access VBA

http://accessexperts.net/blog/2012/02/06/zipandunzipfrommicrosoftvba/   On occasions, we have a ne...

VBA Project 工程破解

  • 2013-08-18 16:02
  • 12KB
  • 下载

Microsoft Project 开发

一直一来,市面上关于Project开发的中文资料基本没有,本博客从一个Project开发初学者者的角度(当然前提条件是要对Project产品有一点了解,对项目管理理念有一点印象,对C#有一定了解),详...

关于Microsoft Project默认开始时间错误问题

新安装的Project2013,今天要制定一份开发计划,像往常一样将计划任务模式设定为自动计划,将所有任务先填进去,然后指定资源,为各个任务指定前置任务,结果发现任务的开始日期竟然是前置任务的结束日期...
  • wts
  • wts
  • 2016-03-08 19:27
  • 2586

NU1002 The dependency Microsoft.AspNet.Mvc 5.2.3 in project dotnetstarter does not support framework

NU1002 The dependency Microsoft.AspNet.Mvc 5.2.3 in project dotnetstarter does not support framework...

Microsoft Office 2016 Project Visio Pro Plus 64 32 下载

Microsoft Office 2016 简体中文Vol版镜像下载(Pro Plus、Visio、Project百度云/360云盘下载) 2015-10-07 来源:蓝点网 分类:软件工具 评论(...

Microsoft Project 使用

Project前期设置: 工具---》更改工作时间:设置 新建日历、例外日期、工作周、单天工作时间短。 工具---》管理器:设置 日历、视图、窗体、域等信息。 项目---》项目信息:设置 项目日历、...

如何运用Microsoft Office Project 2003来做项目计划

如何运用Microsoft Office Project 2003来做项目计划 收藏    项目管理是指对所有的工作进行协调,以实现项目的目标。作为项目工作组的领导,项目经理负责此这些工作...

Microsoft Project发展历史!

Project发展历程回顾   早80年代中期,微软公司就研究开发出了项目管理软件Project的DOS版本。   1990年,微软推出了世界上第一个基于WINDOWS环境下的Project 1....
  • accado
  • accado
  • 2012-07-19 14:05
  • 3155
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)