Надстройка VBA: как "встроить" нужные справочные библиотеки? Получение "Ошибка компиляции в скрытом модуле" при отправке функциональной надстройки другим пользователям

Я написал надстройку PowerPoint, которая хорошо работает на моем локальном компьютере. Тем не менее, когда я посылаю файл по электронной почте другим, внезапно половина функций перестает работать и показывает ошибку компиляции, как указано в строке темы.

Если копнуть немного глубже, похоже, проблема в том, что на клиентских компьютерах нет правильных справочных библиотек (например, библиотека объектов Excel 14.0, Outlook, Access и т. Д.). Я правильно ссылаюсь на эти библиотеки при записи надстройки в виде файла pptm, но представьте, что когда я сохранял pptm в файле ppam, справочные библиотеки как-то "терялись".

У кого-нибудь есть какие-либо идеи? Обратите внимание, что добавление ссылочных библиотек непосредственно на клиентские компьютеры не помогает. Вместо этого мне нужно отправить клиенту базовый файл pptm, добавить справочные библиотеки, а затем сохранить этот файл как файл ppam на клиентском компьютере напрямую, что, конечно, нецелесообразно. Так как же "встраивать" справочные библиотеки в надстройку?

Спасибо!

1 ответ

Решение

Так как же "встраивать" справочные библиотеки в надстройку?

Вы не

Альтернатива:

Вместо Раннего связывания используйте Позднее связывание.

Пример кода раннего связывания.

Здесь мы устанавливаем ссылку на библиотеку объектов MS Word xx.xx.

Sub Sample()
    Dim oWrd As Word.Application
    Dim oDoc As Word.Document

    Set oWrd = New Word.Application

    Set oDoc = oWrd.Documents.Open("....")

    '
    '~~> Rest of the code
    '
End Sub

Преобразование вышеупомянутого в Позднее связывание.

Здесь мы не устанавливаем ссылку, но позволяем коду привязываться к любой версии MS Word, имеющейся на целевом ПК.

Sub Sample()
    Dim oWrd As Object
    Dim oDoc As Object

    Set oWrd = CreateObject("Word.Application")

    Set oDoc = oWrd.Documents.Open("....")

    '
    '~~> Rest of the code
    '
End Sub

Точно так же вы можете изменить свой код для MS-Excel.

Для дальнейшего чтения

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