Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用VBS以只读方式打开MS Project文件_Vba_Ms Project - Fatal编程技术网

Vba 使用VBS以只读方式打开MS Project文件

Vba 使用VBS以只读方式打开MS Project文件,vba,ms-project,Vba,Ms Project,我正试图找到一种快速的方法,以只读方式打开MS Project文件,最好是从资源管理器中打开。我跟随教程指导从excel中执行相同的操作,使用以下代码: '-------------------- Open as Read-Only.vbs -------------------- Option Explicit Dim app 'As Object Call OpenAsReadOnly Sub OpenAsReadOnly() On Error Resume Next

我正试图找到一种快速的方法,以只读方式打开MS Project文件,最好是从资源管理器中打开。我跟随教程指导从excel中执行相同的操作,使用以下代码:

'-------------------- Open as Read-Only.vbs --------------------
Option Explicit

Dim app 'As Object

Call OpenAsReadOnly

Sub OpenAsReadOnly()
   On Error Resume Next   
   Set app = GetObject(, "Excel.Application")
   If IsEmpty(app) Then Set app = CreateObject("Excel.Application")

   With app.Workbooks.Open(WScript.Arguments(0))
      If Not .ReadOnly Then .ChangeFileAccess 3 'xlReadOnly
      app.Visible = True
   End With
End Sub
但当我尝试为这样的项目修改它时:

'-------------------- Open as Read-Only.vbs --------------------
Option Explicit

Dim app 'As Object

Call OpenAsReadOnly

Sub OpenAsReadOnly()
   On Error Resume Next   
   Set app = GetObject(, "MSProject.Application")
   If IsEmpty(app) Then Set app = CreateObject("MSProject.Application")

   With app.Project.Open(WScript.Arguments(0))
      If Not .ReadOnly Then .ChangeFileAccess 3 'xlReadOnly
      app.Visible = True
   End With
End Sub

MS Project闪烁打开,然后关闭。有什么想法吗?

打开MS Project文件的方法是
app.FileOpenEx
。第一个参数是文件名,第二个参数是只读选项。MS Project中没有
ChangeFileAccess
方法

请尝试以下方法:

Dim app    
Set app = GetObject(, "MSProject.Application") 
If IsEmpty(app) Then Set app = CreateObject("MSProject.Application")
app.FileOpenEx(WScript.Arguments(0), True)