【问题标题】:Close MS Project using VSTO使用 VSTO 关闭 MS 项目
【发布时间】:2016-07-04 18:41:24
【问题描述】:

我在 MS Project 上有一个 VSTO。我使用 VB.NET。我需要的是当我按下我在功能区上创建的按钮时,它会执行一些代码来更新某些任务的信息,但是,我需要自动关闭 MS Project。我尝试了 application.FileCloseEx(),但它只关闭文件,MS 项目仍在加载。我需要类似于点击窗口的x按钮。

谢谢, 吉尔伯特

【问题讨论】:

    标签: vb.net vsto ms-project


    【解决方案1】:

    如果您的 MS Project 应用程序对象由“appMSProject”表示,那么它很简单:

    appMSProject.Quit
    

    或者说在 Project 下运行的宏中:

    Application.Quit
    

    以下是我在 Excel 或 Access 的 VBA 中的操作方法。据我所知,VB.NET 中的对象和方法是相同的。底线是我创建了一个 MS Project 对象的实例,它启动应用程序并打开一个文件,执行一些工作,关闭文件,然后通过将 MS Project 对象设置为 Nothing 来销毁它。这具有关闭应用程序的效果。您还可以使用“appMSProject.Quit”,然后将其设置为 Nothing。坦率地说,第二个选项在代码中看起来更有序且更易于理解。无论如何,这是我这样做的一个示例:

    Dim appMSProject As MSProject.Application
    Dim prjPrj As MSProject.Project
    Dim strPrjFile As String
    
    strPrjFile = "C:\where_is_my_file\file_name.mpp"
    
    Set appMSProject = New MSProject.Application
    appMSProject.FileOpenEx Name:=strPrjFile
    Set prjPrj = appMSProject.ActiveProject
    
    '''Do something in here with the prjPrj
    
    'Close the file, in my case w/o saving
    appMSProject.FileCloseEx pjDoNotSave
    
    
    'Destroy the objects
    Set prjPrj = Nothing
    Set appMSProject = Nothing
    

    仅供参考 - 在此示例中,我正在做后台工作,因此我不显示应用程序。我也使用“早期绑定”。

    这是一个 MSDN 示例,它确实显示了该应用程序,其中包含有关早期 -vs- 后期绑定的更多信息 - https://msdn.microsoft.com/en-us/library/office/ff865152.aspx

    【讨论】:

    • 嗨,我在发送问题后能够做到这一点。但是,我可以问你一个新问题吗?我将如何获得打开的 MS Project 的完整路径。
    • 嗨,杰克,我找到了答案,ActiveProject.Fullname
    • 吉尔伯特,酷!如果您不知道该怎么做,我一直在做的另一件事是启动宏录制器,通过单击和键盘输入来执行我想要自动化的操作,停止录制器,然后编辑新录制的宏VBA 编辑器。它从来都不是非常可重用的代码,但它几乎总是暴露对象和参数。您可能已经知道,可以节省大量时间。最好的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多