打开MS Project时连接到项目服务器

时间:2014-06-09 13:13:31

标签: macros vbscript ms-project

我有一个vbscript,检查MS Project是否打开。如果它已经打开它运行一个宏,如果不是它应该打开Project然后运行宏。如果Project已经打开,它可以正常工作。如果项目未打开,则脚本会成功打开并运行宏但在中途失败。基本上它失败了,因为被调用的宏从项目服务器打开文件。即使将我的默认帐户设置为项目服务器网址,也可以在启动'设置为'选择我的默认帐户'它仍然失败。

vbscript打开&运行宏:

dim pjApp

on error resume next
set pjApp = GetObject(, "MSProject.Application")

    if err.Number = 0 then
    pjApp.Visible = True    
    pjApp.macro "testsave"
    else 
    Set pjApp = CreateObject("MSProject.Application") 
    pjApp.Visible = True 
    pjApp.macro "testsave"
    end if
Set pjApp = Nothing 

项目打开时,有没有办法强制它连接到项目服务器站点?

2 个答案:

答案 0 :(得分:0)

代替pjApp.macro尝试:

pjApp.Appllication.Run "testsave"

我知道.macro版本适用于它上面的代码是很奇怪的;然而,它仍然值得一试。此代码也适用于您使用.macro方法的两个地方。

答案 1 :(得分:0)

这是真正的问题:

  

基本上它失败了,因为被调用的宏从项目服务器打开文件。

为了自动化MS Project并将其打开到项目服务器,您需要使用命令行开关,如下所示:

<强>的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"

代码首先检查MS Project是否已经打开,如果是,则使用该实例。否则,它使用shell命令打开特定的项目服务器。以下是命令行开关的文档: Command-line switches for Microsoft Office Project

注意:根据需要更新睡眠值,以便在尝试获取对它的引用之前为MS Project提供足够的时间打开。

VBA版

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"

注意:根据需要更新Winproj.exe的路径。