2010-09-30 63 views
0

在不同的應用程序中宏結束後,用戶打開並顯示用GetObject()打開並可見的MS Project文件的正確方法是什麼?在使用GetObject檢索項目文件後保持打開工程文件

我在網上找到的信息表明setting the Application.UserControl property爲True,在對象超出範圍之前應該允許用戶繼續使用打開的文件。但是,至少對於MS Project來說,Application.UserControl屬性看起來是隻讀的。有沒有辦法解決這個問題?

表示問題的簡化示例:

Sub AddTasks() 
    Dim proj As Object 

    ' Already have the file path from another part of the workflow 
    Set proj = GetObject("C:\projtest.mpp") 

    ' perform some calculations and add new tasks to project 
    proj.Tasks.Add "additional task" 

    ' Leave Project open and visible for the user 
    proj.Application.Visible = True 
    proj.Application.UserControl = True ' Gives "Type Mismatch" error 
    ' without the UserControl line, runs ok, but Project closes after the end of the macro 
End Sub 

回答

1

而不是使用GetObject的,你可以創建應用程序的實例,並打開實例的項目文件?

Sub AddTasks() 
    Dim msProj as Object 
    Set msProj = CreateObject("Project.Application") 

    msProj.FileOpen "C:\projtest.mpp" 

    'do stuff to project file here 

    msProj.Visible = True 
End Sub 

喜歡的東西上面(我不能測試上面的代碼,因爲我沒有MSProject,但類似的代碼適用的MSWord)

+0

「Project.Application」應改爲「MSProject.Application」 ,並且我必須使用Application對象的ActiveProject屬性,因爲FileOpen不返回引用,但這至少起作用。謝謝 – Theran 2010-10-11 15:00:58

0

對於Project用戶控件只是表明,如果用戶啓動了應用程序或沒有;它似乎是隻讀的,因爲它是。我還沒有完成你對Project的要求,儘管這裏是一個類似的例子,用於試圖查看和查找Excel運行實例的Word。也許這有助於一點:

can-vba-reach-across-instances-of-excel