Сбой метода 'fileopenex' объекта '_MSProject' при автоматизации MS Project из 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.Application
а также New MSProject.Application
,
Любой способ решить это?
2 ответа
Вот несколько предложений, чтобы попробовать:
- Задавать
projapp.Visible = True
чтобы помочь отладить проблемы. - CreateObject открывает и возвращает ссылку на объект, поэтому используйте его вместо ручного открытия Project, а затем с помощью GetObject, который просто возвращает ссылку на уже открытый объект.
- Квалифицируйте ссылки на объекты MSProject, например
Dim prj as MSProject.Project
а такжеSet prj = projapp.Projects(....
Я не могу повторить эту проблему с открытием файлов Project Pro 2013 с сервера проекта.
Я использую это для автоматического открытия файлов MSP из Excel, чтобы проверить, открыто ли уже приложение или нет
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")