Ссылка на VBA изменила версию автоматически

Я написал некоторый VBA в Excel 2013, который ссылается на Outlook и теперь используется на виртуальной машине. На прошлой неделе мой ноутбук был обновлен до Office 2016, я внес некоторые изменения в этот инструмент, после чего он не запустился на виртуальной машине.

Оказывается, ссылка VBA Outlook в файле изменилась на v16.0 (Office 2016), поэтому, когда виртуальная машина попыталась запустить код (в 2013 году), она не смогла найти эту ссылку.

Была также общая ссылка на Office, которая осталась как v15.0.

Я не смог найти никакой документации по этому поводу - является ли это стандартным поведением, и если да, то какие идеи о том, как я могу внести дальнейшие изменения в этот файл, чтобы ссылка каждый раз не испортилась?


person JakeyG    schedule 06.03.2018    source источник


Ответы (1)


Это стандартное поведение.

Вам нужно перейти от раннего к позднему связыванию. Удалите ссылку на Outlook в VBE и объявите приложение Outlook как Object в коде.

Dim olApp As Object
Set olApp = CreateObject("Outlook.Application")

Имейте в виду, что при этом вы потеряете интеллект, и вам, возможно, придется изменить некоторые константы на их числовые значения, например. с olMailItem по 0.

Убедитесь, что у вас есть Option Explicit в самом верху ваших модулей, так как это подчеркнет ошибки компиляции.

person Kostas K.    schedule 07.03.2018
comment
Я слышал термины «раннее связывание» и «позднее связывание» и никогда не знал, с чем они связаны, и не удосужился их найти — спасибо! Проблема решена и узнал что-то новое :-) - person JakeyG; 07.03.2018