外部应用程序:循环打开 windows from Excel
External application : loop through open windows from Excel
我通过 Excel 打开了主计划和资源池,但 MSP 随机创建了一个包含其他两个文件的项目 1。
我要Excel检查它是否存在并在不保存的情况下关闭它
Dim ProjApps As new Collection
Dim ProjApp As MSProject.Application
Dim Proj As MSProject.Project
Application.ScreenUpdating = False
Set ProjApp = GetX("MSProject.Application")
ProjApp.Application.AppMaximize
AppActivate ProjApp
SendKeys "{RIGHT}", True
SendKeys "{ENTER}", True
If ProjApp.FileOpenEx(files.MSPRessPool, False, , , , , , , , , , 3) Then
Set Proj = ProjApp.ActiveProject
ProjApps.Add Proj
Else
MsgBox "Fichier non trouvé : " & vbCrLf & files.MSPRessPool
Exit Sub
End If
If ProjApp.FileOpenEx(files.MasterPlanning, False, , , , , , , , , , 3) Then
Set Proj = ProjApp.ActiveProject
ProjApps.Add Proj
Else
MsgBox "Fichier non trouvé : " & vbCrLf & files.MSPRessPool
Exit Sub
End If
For each Proj in ProjApps
Debug.Print Proj.Name
If Proj.Name = "Project1" then
Proj.Application.FileCloseEx pjDoNotSave
End If
Next
Project1 文件没有出现在 ProjApps 集合中,所以我无法关闭它
如何检查打开的 MSP 文件?
MS Project 对象模型有一个 Projects object,它是打开项目的集合,因此您无需创建自己的项目。
For Each Proj In ProjApp.Projects
Debug.Print Proj.Name
If Proj.Name = "Project1" Then
Proj.Application.FileCloseEx pjDoNotSave
End If
Next
根据 Rachel Hettinger 的回答,这段代码运行良好:
For Each Proj In ProjApp.Projects
Proj.Activate
If Proj.Name = "Project1" Then
Proj.Application.FileCloseEx pjDoNotSave
Exit For
End If
Next
这个也可以
For ProjNum = 1 To Projects.Count
Projects(ProjNum).Activate
If Projects(ProjNum).Name = "Project1" Then
Proj.Application.FileCloseEx pjDoNotSave
Exit For
End If
Next ProjNum
我通过 Excel 打开了主计划和资源池,但 MSP 随机创建了一个包含其他两个文件的项目 1。
我要Excel检查它是否存在并在不保存的情况下关闭它
Dim ProjApps As new Collection
Dim ProjApp As MSProject.Application
Dim Proj As MSProject.Project
Application.ScreenUpdating = False
Set ProjApp = GetX("MSProject.Application")
ProjApp.Application.AppMaximize
AppActivate ProjApp
SendKeys "{RIGHT}", True
SendKeys "{ENTER}", True
If ProjApp.FileOpenEx(files.MSPRessPool, False, , , , , , , , , , 3) Then
Set Proj = ProjApp.ActiveProject
ProjApps.Add Proj
Else
MsgBox "Fichier non trouvé : " & vbCrLf & files.MSPRessPool
Exit Sub
End If
If ProjApp.FileOpenEx(files.MasterPlanning, False, , , , , , , , , , 3) Then
Set Proj = ProjApp.ActiveProject
ProjApps.Add Proj
Else
MsgBox "Fichier non trouvé : " & vbCrLf & files.MSPRessPool
Exit Sub
End If
For each Proj in ProjApps
Debug.Print Proj.Name
If Proj.Name = "Project1" then
Proj.Application.FileCloseEx pjDoNotSave
End If
Next
Project1 文件没有出现在 ProjApps 集合中,所以我无法关闭它
如何检查打开的 MSP 文件?
MS Project 对象模型有一个 Projects object,它是打开项目的集合,因此您无需创建自己的项目。
For Each Proj In ProjApp.Projects
Debug.Print Proj.Name
If Proj.Name = "Project1" Then
Proj.Application.FileCloseEx pjDoNotSave
End If
Next
根据 Rachel Hettinger 的回答,这段代码运行良好:
For Each Proj In ProjApp.Projects
Proj.Activate
If Proj.Name = "Project1" Then
Proj.Application.FileCloseEx pjDoNotSave
Exit For
End If
Next
这个也可以
For ProjNum = 1 To Projects.Count
Projects(ProjNum).Activate
If Projects(ProjNum).Name = "Project1" Then
Proj.Application.FileCloseEx pjDoNotSave
Exit For
End If
Next ProjNum