vba命令,用于检查MS Project plan是否已在服务器中签出

vba命令,用于检查MS Project plan是否已在服务器中签出,vba,ms-project,Vba,Ms Project,我正在寻找一个vba命令,它首先检查MS Project plan是否在服务器中签出。如果未签出,则触发保存在MS Project计划中的宏;如果任何其他用户已签出,则跳过该特定MS Proj计划并移动到下一个计划。 我正在使用以下命令,但未得到验证: 如果objProject.IsCheckedOut(docCheckOut)=False,则 objProject.ActiveProject.CheckoutProject 其中,docCheckOut是MS项目计划 完整代码: Sub Tes

我正在寻找一个vba命令,它首先检查MS Project plan是否在服务器中签出。如果未签出,则触发保存在MS Project计划中的宏;如果任何其他用户已签出,则跳过该特定MS Proj计划并移动到下一个计划。 我正在使用以下命令,但未得到验证:

如果objProject.IsCheckedOut(docCheckOut)=False,则 objProject.ActiveProject.CheckoutProject

其中,docCheckOut是MS项目计划

完整代码:

Sub Test()

        Dim mppName, mppFiles(0 To 2), strMacroName(0 To 3) As String
        Dim fileCounter, macroCounter As Integer
        Dim objProject As Object
        Dim docCheckOut As String

        mppFiles(0) = "CMD_mpp1"
        mppFiles(1) = "CMD_mpp2"
        mppFiles(2) = "CMD_mpp3"

        strMacroName(0) = "CMD_Macro1"
        strMacroName(1) = "CMD_Macro2"
        strMacroName(2) = "CMD_Macro3"
        strMacroName(3) = "CMD_Macro4"

        Set objProject = CreateObject("MSProject.Application")

        Application.DisplayAlerts = False
        objProject.DisplayAlerts = False
'
        For fileCounter = 0 To 2
               docCheckOut = mppFiles(fileCounter)

               On Error GoTo L1
               objProject.FileOpenEx Name:="<>\" & docCheckOut, ReadOnly:=True, DoNotLoadFromEnterprise:=False
               objProject.Application.Visible = True

        If objProject.IsCheckedOut(docCheckOut) = False Then
                objProject.ActiveProject.CheckoutProject
                    If objProject.IsCheckedOut(objProject.ActiveProject.Name) Then
                        MsgBox "checked out"
                        For macroCounter = 0 To 3
                            objProject.Application.Macro strMacroName(macroCounter)
                            objProject.Application.FileSave
                            objProject.Application.Publish
                        Next macroCounter
        Else
                MsgBox "Not checked out"
                GoTo L1
        End If


L1:    Next fileCounter

        Application.DisplayAlerts = True
        objProject.DisplayAlerts = True
End Sub
子测试()
Dim mppName、mppFiles(0到2)、strMacroName(0到3)作为字符串
Dim fileCounter,宏计数器为整数
作为对象的Dim OBJ项目
将docCheckOut设置为字符串
mppFiles(0)=“CMD\u mpp1”
mppFiles(1)=“CMD_mpp2”
mppFiles(2)=“CMD_mpp3”
strMacroName(0)=“CMD_Macro1”
strMacroName(1)=“CMD_Macro2”
strMacroName(2)=“CMD_Macro3”
strMacroName(3)=“CMD_Macro4”
设置objProject=CreateObject(“MSProject.Application”)
Application.DisplayAlerts=False
objProject.DisplayAlerts=False
'
对于fileCounter=0到2
docCheckOut=mppFiles(文件计数器)
关于错误转到L1
objProject.FileOpenEx名称:=“\”&docCheckOut,只读:=True,DoNotLoadFromEnterprise:=False
objProject.Application.Visible=True
如果objProject.IsCheckedOut(docCheckOut)=False,则
objProject.ActiveProject.CheckoutProject
如果objProject.IsCheckedOut(objProject.ActiveProject.Name),那么
MsgBox“已签出”
对于宏计数器=0到3
objProject.Application.Macro strMacroName(宏计数器)
objProject.Application.FileSave
objProject.Application.Publish
下一个宏计数器
其他的
MsgBox“未签出”
转到L1
如果结束
L1:下一个文件计数器
Application.DisplayAlerts=True
objProject.DisplayAlerts=True
端接头

如果有其他命令,有人可以建议吗?

相关:非常感谢Rachel。它解决了我的问题。相关:非常感谢瑞秋。它解决了我的问题。