簡體   English   中英

從VBA自動執行MS Project時,對象'_MSProject'的方法'fileopenex'失敗

[英]method 'fileopenex' of object '_MSProject' failed when automating MS Project from VBA

我有一個excel宏,應該打開MS Project並更改一些自定義字段,然后再次將其關閉。 Excel和Project均為2010版本,並且該項目存儲在MS Project Server 2010中。

當我手動打開MS Project,然后使用VBA檢測到它時,一切正常。 但是,當我使用VBA打開Project的新實例時(因為尚未手動打開MS Project),它會引發錯誤:

在此處輸入圖片說明

這是代碼的兩個版本:

Sub open_project_with_error()

    Dim projapp As MSProject.Application, prj As Project
    Set projapp = New MSProject.Application
    projapp.FileOpenEx Name:="<>\Name of my project", ReadOnly:=False
    Set prj = Projects("Name of my project")
  ' Do more things...
End Sub

Sub open_project_without_error()

    ' Manually open MS Project application before running this VBA
    Dim projapp As MSProject.Application, prj As Project
    Set projapp = GetObject(, "MSProject.Application")
    projapp.FileOpenEx Name:="<>\Name of my project", ReadOnly:=False
    Set prj = Projects("Name of my project")
  ' Do more things...
End Sub

自然,我希望問題出在語句New MSProject.Application 但是,此子項可以正常工作,如預期的那樣:

Sub open_project_and_display_about()

    Dim projapp As MSProject.Application, prj As Project
    Set projapp = New MSProject.Application
    Debug.Print projapp.About()

End Sub

這意味着該錯誤僅由New MSProject.ApplicationNew MSProject.Application的組合觸發。

有什么辦法解決嗎?

以下是一些建議嘗試:

  1. 設置projapp.Visible = True可幫助調試問題。
  2. CreateObject 將打開並返回對對象的引用,因此請使用它而不是手動打開Project,然后使用GetObject來返回對已打開對象的引用。
  3. 限定對MSProject對象的引用,例如Dim prj as MSProject.ProjectSet prj = projapp.Projects(....

FWIW我無法使用Project Pro 2013從項目服務器打開文件來復制此問題。

我用它來自動從Excel打開MSP文件,以檢查應用程序是否已經打開

Function GetX(Str As String) As Object
    Dim app As Object
    On Error Resume Next

    Set app = GetObject(, Str)
    If Err.Number <> 0 Then
        Set app = CreateObject(Str)
        app.Visible = False
        app.Clear
    End If

    Set GetX = app
End Function

然后在模塊中調用函數

Set ProjApp = GetX("MSProject.Application")
projapp.FileOpenEx Name:="<>\Name of my project", ReadOnly:=False
Set prj = Projects("Name of my project")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM