Обновление — 20 января 2016 г. — я считаю, что ответ, опубликованный @Alistair, является правильным, и я работаю над его проверкой.
Со времени моего последнего поста я пытался восстановить 64-битную среду Office 16. Не работало.
Чтобы вернуть это к надежной отправной точке, я перешел на Office 2013 (32-разрядная версия) на своем обычном компьютере с Windows 10. Приведенный ниже код работает, как и ожидалось. Далее я собираюсь создать еще одну виртуальную машину для установки 2016 года и посмотреть, работает ли 32-разрядная версия Office 16.
Обновление — 19 января 2016 г. 1658 PT — я собираюсь изучить, как сделать код осведомленным о 64-битных средах против 32-битных. См.: https://msdn.microsoft.com/en-us/library/office/gg264421.aspx
Если это решит проблему, я обновлю этот вопрос с решением. Спасибо!
***** Исходный пост ниже ****************************
Это происходит при запуске макроса в MS Access, который должен открыть файл MS Project и импортировать данные из задач MS Project в Access. Код ниже является образцом. Ошибка, которую мы получаем, связана с Windows 10 и MS Office 2016. Эта ошибка не возникает на другом компьютере под управлением Windows 7 и Office 2013; версии MS Project соответствуют версиям Office.
Мы получаем ошибку автоматизации, когда я пытаюсь создать экземпляр объекта MSProject.Application. Ошибка:
Ошибка выполнения "-2147467229 (80004023)":
Ошибка автоматизации Произошла ошибка установщика программного обеспечения Microsoft
Вот код:
Option Compare Database
Option Explicit
Sub test01()
Dim appMSProject As MSProject.Application
On Error GoTo ErrorHandler
'*** The next line is where we pop the error ***
Set appMSProject = New MSProject.Application
appMSProject.FileOpenEx Name:="C:\IMS\Project1.mpp"
'*** next line is just so I can see if something odd is going on ***
MsgBox (appMSProject.About())
appMSProject.Quit SaveChanges:=pjDoNotSave
Exit Sub
ErrorHandler:
MsgBox ("Error Number: " & Err.Number & vbCrLf & _
"Error Desc.: " & vbCrLf & _
Err.Description)
Exit Sub
End Sub
Интересно, что в режиме отладки, если я удалю «Новый» и вернусь в него, иногда он будет работать.
Мы попытались отключить подсказки для входа на сервер проекта, ссылки между проектами и установить минимальные параметры безопасности макросов в Access и Project. Мы также пробовали это с различными файлами .MPP на случай, если файл был поврежден или, возможно, несовместим с MS Project 2016, что было долгим испытанием, поскольку файл, конечно, открывается после создания экземпляра объекта.
Я также пробовал эту технику:
Dim appMSProject As Object
...
Set appMSProject = CreateObject("MSProject.Application")
Это дает ту же ошибку. Я даже скопировал и вставил образцы кода отсюда: https://msdn.microsoft.com/en-us/library/office/ff865152.aspx
Открытый переключатель здесь ссылки. Я использую библиотеку объектов Microsoft Project 16. В статье MSDN указана библиотека объектов Microsoft Project 15. Я пытался найти более новую статью MSDN, спецификацию, объектную модель или что-нибудь еще, относящееся к Project 16. Никакой радости.
Хотя я нахожу в сети несколько очень общих советов по ошибкам автоматизации, почти во всех этих примерах возникают проблемы после того, как они запускают объект приложения, а не в тот момент, когда у меня возникают проблемы. В MS Project VBA также очень мало помощи в целом. Конечно, это меньшее сообщество. Просто сообщаю, что посмотрел.
Все, что я могу думать, это то, что я упустил способ получить документацию Office 2016 / Project 2016 VBA, и есть новый метод создания экземпляра объекта MSProject.Application. Если это так просто и кто-нибудь знает волшебный URL-адрес, пожалуйста, передайте его.
Заранее спасибо! - Джейд