Не удается найти проект или библиотеку для стандартных функций VBA

Поэтому мне приходится запускать чужое приложение Excel на моем ПК, и я получаю сообщение «Не могу найти проект или библиотеку» для стандартных функций, таких как дата, формат, шестнадцатеричный формат, середина и т. д.

Некоторые исследования показывают, что если я добавляю к этим функциям префикс «VBA». как в "VBA.Date", тогда все будет нормально.

Веб-страницы предполагают, что это связано с моими ссылками на проекты в моей системе, тогда как они должны быть в порядке в системе разработчика. Я буду иметь дело с этим в течение некоторого времени от других и буду распространять эти приложения среди многих других, поэтому мне нужно понять, что не так с моей настройкой Excel, что мне нужно исправить, или что нужно изменить в xls, чтобы он работал на различных системах. Я бы не хотел, чтобы все использовали «VBA». в качестве явной ссылки, но если нет идеального решения, я полагаю, это то, что нам нужно сделать.

  • Как сделать "VBA". неявно в свойствах/ссылках/и т. д. моего проекта?

-Адам


person Adam Davis    schedule 03.02.2009    source источник
comment
вы разрабатываете в одной версии Excel и распространяете среди пользователей, использующих другую версию?   -  person Russ Cam    schedule 03.02.2009
comment
Может быть и так - я не знаю, какую версию используют разработчики. Я проверю.   -  person Adam Davis    schedule 03.02.2009
comment
cpearson.com/Excel/MissingReferences.aspx   -  person SmartestVEGA    schedule 22.12.2009
comment
Мне пришлось поставить перед кучей функций префикс vba. прежде чем это позволит мне найти недостающую библиотеку.   -  person kztd    schedule 16.04.2019
comment
Попробуйте открыть файл с помощью Excel в Интернете (Office 365) и сохранить с новым именем файла. Это сработало для меня!   -  person Sean McCarthy    schedule 09.03.2020


Ответы (9)


Я видел ошибки в стандартных функциях, если отсутствовала ссылка на совершенно другую библиотеку.

В редакторе VBA запустите команду «Компилировать» из меню, а затем проверьте диалоговое окно «Ссылки», чтобы увидеть, не пропало ли что-то, и если да, попробуйте добавить эти библиотеки.

В общем, хорошей практикой является компиляция полного кода VBA, а затем сохранение документа перед распространением.

person Dirk Vollmar    schedule 03.02.2009
comment
Я согласен. Отсутствующие ссылки будут четко помечены как ОТСУТСТВУЮЩИЕ. В вашем случае я подозреваю, что это более поздняя версия библиотеки Excel, которую можно обойти с помощью поздней привязки или выбора более ранней библиотеки. Я не верю, что компиляция кода поможет с отсутствующими ссылками. - person Fionnuala; 03.02.2009
comment
Хм. Я получаю запрос на пароль VBAproject. Сюжет сгущается. - person Adam Davis; 03.02.2009
comment
Я думаю, пришло время найти оригинального разработчика. - person Toby Allen; 17.02.2009
comment
Я просто хотел добавить, что у меня тоже была эта проблема, но в довольно уникальном сценарии. Некоторые машины будут иметь все библиотеки DLL (включая в данном случае Acrobat Distiller), а некоторые — нет. Мне по-прежнему нужны были машины без Acrobat DLL для запуска макросов, которые ее не использовали, и поэтому я прибегнул к VBA. добавление пространства имен для этих функций. Это решило проблему и работало в обоих сценариях. - person Oliver Gray; 11.09.2012
comment
Я просто хотел указать, что столкнулся с той же проблемой, ни одна из ссылок не отмечена как ОТСУТСТВУЕТ, я не нашел для нее решения, но временное решение: откройте диалоговое окно ссылки в VBE, ничего не трогайте просто нажмите OK, и проект VBA вернется в нормальное состояние. - person Rick; 15.09.2017

У меня такая же проблема. Это сработало для меня:

  • В VB перейдите к Справочникам по инструментам
  • Снимите флажок с библиотеки «Crystal Analysis Common Controls 1.0». Или любую библиотеку.
  • Just leave these 5 references:
    1. Visual Basic For Applications (This is the library that defines the VBA language.)
    2. Библиотека объектов Microsoft Excel (определяет все элементы Excel.)
    3. OLE-автоматизация (здесь указываются типы для связывания и встраивания документов, а также для автоматизации других приложений и «подключения» системы COM, которую Excel использует для связи с внешним миром.)
    4. Microsoft Office (это определяет элементы, общие для всех программ Office, такие как панели команд и элементы управления панели команд).
    5. Microsoft Forms 2.0 Это необходимо, если вы используете форму пользователя. Эта библиотека определяет такие вещи, как пользовательская форма и элементы управления, которые вы можете поместить в форму.
  • Затем сохраните.
person andres    schedule 08.07.2011
comment
Для меня мне пришлось снять флажок с библиотеки объектов MicroSoft MapPoint 19.0, которая не использовалась в рассматриваемом макросе, но использовалась в другом месте электронной таблицы. - person ELW; 16.03.2016
comment
У меня была Microsoft Windows Common Controls 6.0 (SP4), которая присутствовала на моем компьютере с Excel 2010, но на ноутбуке с Excel 2013. Кроме того, похоже, что она используется (я получаю сообщение «Не могу удалить элемент управления или ссылку; используется, если Я снимаю его), поэтому мне нужно выяснить, что его использует, и избавиться от этого... - person Rich; 03.06.2016
comment
[Поправка: выше должно было быть сказано не на ноутбуке...] Оказывается, я также не могу удалить ссылку на проект на машине, на которой он работает. Теперь я попытался удалить его программно (используя .VBProject.References, перебирая их и вызывая Remove на плохом, чтобы удалить его), и я получаю ошибку времени выполнения «-2147319779 (8002801d)»: библиотека объектов не зарегистрирована на компьютере без библиотеки, и я получаю ошибку времени выполнения "57101": не удается удалить ссылку по умолчанию на компьютере, на котором есть библиотека MSComctlLib. Грррр. - person Rich; 03.06.2016

Я столкнулся именно с этой проблемой и обнаружил, что на компьютере пользователя одна из библиотек, от которых я зависел, была помечена как «ОТСУТСТВУЕТ» в диалоговом окне ссылок. В этом случае это была какая-то библиотека офисных шрифтов, которая была доступна в моей версии Office 2007, но не на рабочем столе клиента.

Ошибка, которую вы получаете, - это полный отвлекающий маневр (как указал divo).

К счастью, я ничего не использовал из библиотеки, поэтому мне удалось полностью удалить это из ссылок XLA. Я предполагаю, что расширением рекомендуемой передовой практики divo было бы тестирование для проверки XLA на всех целевых версиях Office (в любом случае неплохая идея).

person RedBlueThing    schedule 04.03.2009

В моем случае это было то, что функция была НЕОДНОЗНАЧНОЙ, поскольку она была определена в библиотеке VBA (присутствует в моих ссылках), а также в библиотеке объектов Microsoft Office (также присутствует). Я удалил библиотеку объектов Microsoft Office и вуаля! Нет необходимости использовать VBA. префикс.

person Community    schedule 11.07.2009

В моем случае я даже не смог открыть «Ссылки» в окне Visual Basic. Я даже пытался переустановить Office 365, но это не сработало. Наконец, я попытался отключить макросы в настройках «Центра управления безопасностью». Когда я перезапустил Excel, я получил предупреждающее сообщение о том, что макросы отключены, и когда я нажал «включить», я больше не получал сообщение об ошибке.

Позже я снова включил все макросы в настройках «Центра управления безопасностью», и сообщение об ошибке не появилось!

Эй, если ничего не работает для вас, попробуйте выше; это сработало для меня! :)

Обновление: проблема вернулась, и вот как я "исправил" ее второй раз:

Я открыл свою книгу в Excel онлайн (Office 365, в браузере, который в любом случае не поддерживает макросы), сохранил ее с новым именем файла (по-прежнему с расширением .xlsm) и снова открыл в программное обеспечение для настольных ПК. Это сработало.

person Sean McCarthy    schedule 05.02.2020
comment
Открытие рабочей книги в Excel онлайн — единственное решение этой проблемы, которое мне пока помогало, и поверьте мне, я перепробовал все: от безопасного режима до переустановки/восстановления Office, перезагрузки компьютера и молитвы. Хотелось бы, чтобы я больше понимал причину и следствие здесь, потому что это происходит, по-видимому, случайным образом с книгами .xlsm с поддержкой макросов, хотя довольно редко - по анекдотическим данным, это чаще происходит с более сложными файлами. Кажется, что какой-то элемент библиотеки VBA может быть поврежден, но тот факт, что Excel онлайн может это исправить, а другие методы не могут, является странным. - person Mako212; 10.06.2020
comment
Самое простое исправление, которое я нашел до сих пор для этой очень раздражающей ошибки. Я предполагаю, что это будет исходить от пользователей-соавторов (файлы Excel находятся в Sharepoint), у которых у всех одна и та же основная версия Excel, но не одинаковые второстепенные обновления (например, версия 2101 сборка 13628.20000 - vs- версия 2101 сборка 13624.20002). Может ли это быть? Я очень хотел бы разобраться в этой проблеме, которая, кажется, возникает гораздо чаще, поскольку OfficeUploadCenter был удален Microsoft в последние месяцы (что теперь вызывает много ошибок синхронизации). - person flo5783; 07.01.2021

В моем случае я проверял работу, выполненную на моем офисном компьютере (с установленным Visio) дома (без Visio). Несмотря на то, что VBA, казалось, зацикливался на простых функциях по умолчанию, проблема заключалась в том, что у меня все еще были активны ссылки на библиотеки Visio.

person SmrtGrunt quit because Monica    schedule 05.02.2018

Я нашел ссылки на программный файл AVAYA/CMS? Совершенно случайно, это было в MS Access, ничего общего с AVAYA. У меня есть AVAYA на моем ПК, а у других нет, поэтому это объясняет, почему он работал на моей машине, а не на других, но не то, как Access был связан с AVAYA. В любом случае - я просто снял отметку со ссылки, и это, похоже, решило проблему.

person Daniel baker    schedule 09.10.2019

Даже когда все ссылки в порядке, проблема с префиксом вызывает ошибки компиляции.

Как насчет создания подпрограммы поиска и замены для всех «встроенных функций VBA» во всех модулях, например:

заменить текст в модуле кода

например = Дата будет заменена на = VBA.Date.

например Дата( будет заменена на VBA.Date( .

(за исключением dim t As Date или mydate)

Все функции vba для поиска и замены написаны здесь:

список функций vba

person Noam Brand    schedule 04.12.2020

У меня была эта ошибка в течение двух лет в нескольких файлах XLSM (что больше всего раздражает, поскольку, когда это происходит, с файлом все в порядке! - Я подозреваю, что осиротевшие процессы Excel являются частью проблемы)

Наиболее эффективным решением, которое я нашел, было использование Python с oletools https://github.com/decalage2/oletools/wiki/Install, извлечение кода VBA всех модулей и сохранение в текстовом файле.

Затем я просто переименовываю файл в zip-файл (на всякий случай сделайте резервную копию!), открываю этот zip-файл и удаляю файл xl/vbaProject.bin. Переименуйте обратно в XLSX, и все должно быть хорошо.

Скопируйте сохраненный код VBA (который потребует очистки разрывов строк, комментариев и прочего. Также потребуется добавить недостающие библиотеки.

Это спасло меня, когда другие методы не помогли.

YMMV.

person Sam    schedule 21.09.2020