Access / Project VBA - ошибка автоматизации при создании экземпляра объекта приложения MS Project

Обновление — 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-адрес, пожалуйста, передайте его.

Заранее спасибо! - Джейд


person JackW327    schedule 19.01.2016    source источник
comment
Это может быть глупый вопрос, но вы используете 32-разрядные или 64-разрядные версии Access и Project? Есть ли вероятность, что у вас установлены 64-разрядная версия Access и 32-разрядная версия Project или наоборот?   -  person Alistair McMillan    schedule 20.01.2016
comment
Случались странные вещи. Я только что подтвердил, что все 64 бит. Я предположил, что ссылки не будут проблемой (32 -v- 64), но я думаю, что проведу некоторое исследование и в этом направлении. Я полагаю, что у меня могут быть какие-то причудливые ссылки или 32-битная библиотека?? Стоит попробовать.   -  person JackW327    schedule 20.01.2016
comment
FWIW Я проверил ссылку. Файл MSPRJ.OLB находится в папке C:\Program Files\Microsoft Office\root\Office16. Моя установка Office 16 является 64-разрядной, поэтому я считаю, что ссылка также должна быть 64-разрядной. Я пока не могу найти ничего конкретного, где я могу определить файл как 64-битный, например, размер файла, контрольную сумму и т. д.   -  person JackW327    schedule 20.01.2016
comment
@AlistairMcMillan - Спасибо! Ваша идея привела меня на путь, который я не рассматривал. Я обновил вопрос тем, что нашел. Теперь мне нужно разобраться, как реализовать исправление. Надеюсь, это работает! Это шаг в правильном направлении.   -  person JackW327    schedule 20.01.2016
comment
Просто просматривая статью, на которую вы ссылались выше, не похоже, что этот код достаточно сложен, чтобы его нужно было обновлять. И, учитывая сообщение об ошибке, которое вы получаете, я думаю, что это просто проблема с установкой на вашем компьютере.   -  person Alistair McMillan    schedule 20.01.2016


Ответы (3)


Я думаю, что это проблема с установкой Microsoft Project 2016 на вашем компьютере.

Я только что протестировал ваш код на машине с Access 2016 и Project 2016, и он сработал с первого раза.

Я бы рекомендовал сделать восстановить установку в Project и, возможно, в Access.

person Alistair McMillan    schedule 20.01.2016
comment
Спасибо! Я попробую сейчас. Кстати, я переустановил Office 2016 около трех недель назад, поэтому не думал, что это будет высоко в списке приоритетов. Но если это работает для вас, то это свидетельствует об обратном. Кстати, какая у вас версия Windows? - person JackW327; 20.01.2016
comment
Обновление, ну пробовал ремонтировать, радости нет. Также проверил, чтобы убедиться, что .NET обновлен, так и было. Я согласен, что установка Office или моя среда Windows могут быть в корне. Я определенно хочу исключить это. Итак, я собираюсь продолжить работу в этом направлении. Я собираюсь очистить некоторые старые приложения, переустановить Office. Спасибо за тестирование этого кода на вашем компьютере! Я опубликую здесь любой успех. - person JackW327; 20.01.2016
comment
Алистер, если у вас есть возможность ответить, не могли бы вы подтвердить, используете ли вы 32-битную или 64-битную версию? Спасибо. - person JackW327; 21.01.2016
comment
Протестировано на 64-битной Windows 7 и 32-битной Windows 10. Оба с офисом 32-бит. Но, как я упоминал выше, основываясь на статье, на которую вы ссылаетесь, я не думаю, что этот код достаточно сложен, чтобы вызвать какие-либо проблемы с 32/64-битными версиями. - person Alistair McMillan; 21.01.2016
comment
Алистер, еще раз спасибо. Хорошо. Я собираюсь продолжить работу над окружающей средой, как я уже упоминал в своем обновлении к сообщению. Я очень уверен, что вы правы. Как только я заработаю, я отмечу это как ответ. - person JackW327; 21.01.2016
comment
Готово на данный момент. Я заставил его работать над переустановкой Office 2013, и я решил свои другие проблемы с 2016. Пока я собираюсь зависнуть с 2013. Мне пришлось удалить запись реестра для этого поста - kb.palisade.com/index.php?pg=kb.page&id=456 - person JackW327; 03.02.2016

Вы можете попробовать установить KB3114538. По-видимому, некоторые свойства объектов VBA 2016 года были добавлены, но не были обратно совместимы со старыми версиями.

Также может быть полезно убедиться, что Project и Office полностью обновлены.

Самый ценный игрок проекта Рода Гилла

person Rod Gill    schedule 04.04.2016

У меня была такая же проблема сегодня при обновлении 32-разрядной версии Office 2016 до 64-разрядной. Все мои объекты Outlook в VBA завершились неудачно, что привело к сообщению «Ошибка автоматизации: обнаружена ошибка установщика программного обеспечения Microsoft». Я переименовал ключ реестра, связанный с Outlook, и при следующем вызове он, видимо, был перестроен, после чего все снова заработало. Дополнительные сведения см. по этой ссылке: https://support.microsoft.com/en-us/help/828550/you-receive-run-time-error-429-when-you-automate-office-applications. В моем случае переустановка Office не требуется.

person MarkF    schedule 27.02.2019