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

Обновление - 20.01.2016. Я считаю, что ответ @Alistair правильный, и я работаю над тем, чтобы проверить.

Со времени моего последнего поста я пытался восстановить 64-битную среду Office 16. Не работал.

Чтобы вернуть это к прочной отправной точке, я опустился до Office 2013 (32-разрядная версия) на моем обычном компьютере с Windows 10. Код ниже работает как ожидалось. Далее я собираюсь создать еще одну виртуальную машину для установок 2016 года и посмотреть, работает ли 32-разрядная версия Office 16.

Обновление - 19.01.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 Software Installer

Вот код:

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

Интересно, что в режиме отладки, если я удаляю "New" и возвращаюсь в него, иногда он запускается.

Мы попытались отключить приглашения для входа на сервер проекта, проецировать ссылки на проект и установить минимальную настройку безопасности макросов в 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. Никакой радости.

Несмотря на то, что я нахожу несколько очень общих советов по поводу ошибок в Интернете, почти все эти примеры имеют проблемы после того, как они ускоряют объект Application, а не в тот момент, когда у меня возникают проблемы. В целом, MS Project VBA очень мало помогает. Конечно, это меньшее сообщество. Просто сообщаю тебе, что я посмотрел.

Все, что я могу думать, - это то, что мне не хватает способа получить документацию по Office 2016 / Project 2016 VBA, и есть новый способ создания экземпляра объекта MSProject.Application. Если это так просто и кто-то знает магический URL, пожалуйста, передайте его.

Заранее спасибо! - JD

2 ответа

Решение

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

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

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

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

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

Род Гилл Проект MVP

У меня была такая же проблема сегодня при обновлении 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 Нет повторной установки Офис требуется в моем случае.

Другие вопросы по тегам