我编写了一个宏来打开资源池,提取资源数据并导入到excel工作簿中,然后打开包含实际员工列表的第二个工作簿,比较并混合这两个列表并将完整的更新列表注入MSP资源池。
一切正常,但是在过程结束时,我得到了令人讨厌的“ MSP另存为”提示窗口。
我尝试了所有ProjApp.DisplayAlerts = False
,ProjApp.FileCloseEx
,ProjApp.FileCloseEx pjSave
,ProjApp.FileExit
,ProjApp.FileExit pjSave
或ProjApp.ActiveProject.SavesAs ProjApp.ActiveProject.Name
,但是我总是有这个提示窗口,想摆脱。有没有办法做到这一点,就像Excel Workbooks一样?
编辑:
看来问题出在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
答案 0 :(得分:0)
打开资源库和总体规划似乎可以解决问题。还必须将关闭方法从ProjApp.FileCloseEx
更改为ProjApp.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 /表示只有打开时资源池才是只读的这样,并要求另存为副本。猜猜我还有一些工作要掌握这些奥秘:)