Connect to a project server when opening MS Project

前端 未结 2 1268
南旧
南旧 2020-12-12 03:23

I have a vbscript that checks to see if MS Project is open. If it\'s already open it runs a macro if not it should open Project then run the macro. It works fine if Project

相关标签:
2条回答
  • 2020-12-12 03:34

    In place of pjApp.macro try:

    pjApp.Appllication.Run "testsave"
    

    I know that it is weird that the .macro version works for the code above it; however, it is still worth a shot. This code should also work for both places where you are using the .macro method.

    0 讨论(0)
  • 2020-12-12 03:51

    Here is the real issue:

    Basically it fails because the macro that is being called opens files from project server.

    In order to automate MS Project and have it open to a project server, you need to launch winproj.exe using a command-line switch as follows:

    VBScript

    On Error Resume Next
    Dim pjApp 
    Set pjApp = GetObject(, "MSProject.Application")
    If Err.Number <> 0 Then
        Dim ProjServer
        ProjServer = Chr(34) & "enter project server name here" & Chr(34)
        Set objShell = WScript.CreateObject("WScript.Shell")
        objShell.Run "winproj /s " & ProjServer, 1, True
        Set objShell = Nothing 
        WScript.Sleep 5000
        Set pjApp = GetObject(, "MSProject.Application")
    End If
    pjApp.Macro "testsave"
    

    The code first checks to see if MS Project is already open and if so, uses that instance. Otherwise it uses the shell command to open to a specific project server.

    Note: Update sleep value as necessary to give MS Project enough time to open before trying to get a reference to it.

    VBA version

    On Error Resume Next
    Dim pjApp As MSProject.Application
    Set pjApp = GetObject(, "MSProject.Application")
    If Err.Number <> 0 Then
        Dim ProjServer As String
        ProjServer = Chr$(34) & "enter project server name here" & Chr$(34)
        Shell "C:\Program Files (x86)\Microsoft Office\Office14\Winproj.exe /s " & ProjServer, vbNormalFocus
        Do While pjApp Is Nothing
            DoEvents
            Set pjApp = GetObject(, "MSProject.Application")
        Loop
    End If
    pjApp.Macro "testsave"
    

    Note: Update the path to Winproj.exe as necessary.

    Documentation for command-line switches seems to have been removed from Microsoft's site. Here's a page that still provides the documentation: Using Command-line switches for Project. Briefly:

    • /s "URL"
    • /u "username"
    • /p "password"
    • filename
    • -ProjectProfiles
    0 讨论(0)
提交回复
热议问题