I am looking for a vba command which checks first whether MS Project plan is checked out in the server. If it is not checked out then trigger the macros saved in the MS Project plan and if it is checked out by any other user, then skip that particular MS Proj plan and move to the next one. I am using below command but it is not getting validated:
If objProject.IsCheckedOut(docCheckOut) = False Then objProject.ActiveProject.CheckoutProject
where, docCheckOut is the MS Project plan.
Full Code:
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
Can anyone please suggest other command if any?