Excel 365 заменяет библиотеки проектов VBA - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть файл .xlsm с макросами, которые используют несколько библиотек проектов, например, библиотеку Microsoft Outlook 14.0. Этот файл обновляется пользователями и обменивается между ними. Этот файл был создан на Windows 7 P C с Office 2010. Когда этот файл открывается на Windows 10 P C с Office 365, библиотеки проекта заменяются более новыми версиями (365 версий). , После этого, когда пользователь Windows 7 + Office 2010 получает тот же файл и открывает его, макросы не работают, поскольку более новые версии библиотек go отсутствуют.

Как остановить Office 365 от замены библиотек и обеспечения работы макросов на обоих ПК? Разве Office 365 не должен быть обратно совместимым автоматически?

Если я правильно понимаю, я уже использую позднее связывание:

'get user's email id
    Dim OutApp, olAllUsers, oExchUser, oentry, myitem As Object
    Dim User As String
    Set OutApp = CreateObject("outlook.application")
    Set olAllUsers = OutApp.Session.AddressLists.Item("All Users").AddressEntries
    User = OutApp.Session.CurrentUser.Name
    Set oentry = olAllUsers.Item(User)
    Set oExchUser = oentry.GetExchangeUser()
    user_email = LCase(CStr(oExchUser.PrimarySmtpAddress))

ошибка появляется в последней строке

1 Ответ

0 голосов
/ 16 апреля 2020

Чтобы предотвратить это, используйте Позднее связывание вместо Раннего связывания.

См.…

В Позднее связывание вы будете использовать

Set oAPP = CreateObject("Outlook.Application")

для создания экземпляра Outlook (без необходимости установки ссылка на библиотеку), в то время как раннее связывание будет использовать Set oAPP = New Outlook.Application и понадобится ссылка.

Поэтому, если вы работаете с разными версиями Outlook, рекомендуется использовать Позднее связывание, чтобы предотвратить такое странное поведение. Обратите внимание, что вы потеряете смысл intelli, и вместо того, чтобы объявлять тип c Dim oAPP As Outlook.Application, вам нужно будет использовать Object для всех типов Outlook c: Dim oAPP As Object

...