首页 > 解决方案 > 应用程序:有没有办法在没有提示的情况下保存和关闭外部文件?

问题描述

我编写了一个宏来打开资源池,提取资源数据并导入到 Excel 工作簿,然后打开带有实际员工列表的第二个工作簿,比较和混合两个列表,并将完整的更新列表注入 MSP 资源池。

一切正常,但在过程结束时我得到了烦人的 MSP 另存为提示窗口。

我尝试了所有ProjApp.DisplayAlerts = False, ProjApp.FileCloseEx, ProjApp.FileCloseEx pjSave, ProjApp.FileExit,ProjApp.FileExit pjSave或者ProjApp.ActiveProject.SavesAs ProjApp.ActiveProject.Name但我总是有这个我想摆脱的提示窗口。有没有办法做到这一点,就像 Excel 工作簿一样?

编辑:似乎问题来自 FileOpenEx 方法。我设置ProjApp.FileOpenEx(file, False, , , , , , , , , , 2)了,但是当涉及到 FileCloseEx 时,我收到一条消息,指出文件是只读而不是读/写,因为它应该是

Dim ProjApp As MSProject.Application
Dim Proj As MSProject.Project

Set ProjApp = GetX("MSProject.Application")
ProjApp.Visible = True
ProjApp.DisplayAlerts = False

If ProjApp.FileOpenEx(files.MSPResourcePool, False, , , , , , , , , , 2) Then
    Set Proj = ProjApp.ActiveProject
Else
    MsgBox "Fichier non trouvé : " & vbCrLf & files.MSPRessPool
    Exit Sub
End If

ProjApp.ViewApplyEx Name:="Resource Sheet", ApplyTo:=0

...

ProjApp.FileCloseEx
Set Proj = Nothing
Set ProjApp = Nothing

ProjApp.DisplayAlerts = True

标签: excelvba

解决方案


打开资源池总体规划似乎可以解决问题。也必须将关闭方法从更改ProjApp.FileCloseExProjApp.Quit pjSave

Dim ProjApp As MSProject.Application
Dim Proj As MSProject.Project

Set ProjApp = GetX("MSProject.Application")
ProjApp.Visible = True
ProjApp.DisplayAlerts = False

    If ProjApp.FileOpenEx(files.MSPRessPool, False, , , , , , , , , , 3) Then
        Set Proj = ProjApp.ActiveProject
    Else
        MsgBox "Fichier non trouvé : " & vbCrLf & files.MSPRessPool
        Exit Sub
    End If

    If ProjApp.FileOpenEx(files.MasterPlanning, False, , , , , , , , , , 3) Then
        Set Proj = ProjApp.ActiveProject
    Else
        MsgBox "Fichier non trouvé : " & vbCrLf & files.MSPRessPool
        Exit Sub
    End If

ProjApp.ViewApplyEx Name:="Resource Sheet", ApplyTo:=0

...

ProjApp.Quit pjSave
Set Proj = Nothing
Set ProjApp = Nothing

ProjApp.DisplayAlerts = True

现在我更新了总体规划中的资源,它更新了资源池中的资源。

我想使用的另一个选项是,ProjApp.ResourceSharingPoolUpdate但是 1/ 当资源池以读/写权限打开时它不起作用,并且 2/ 它说资源池是只读的,如果像这样打开并要求保存为复制。我想我还有一些工作要掌握这些奥秘:)


推荐阅读