Lost your password?


Хитрости »
Основные понятия (26)
Сводные таблицы и анализ данных (10)
Графики и диаграммы (5)
Работа с VB проектом (12)
Power BI и Power Query (20)
Условное форматирование (5)
Списки и диапазоны (5)
Макросы(VBA процедуры) (68)
Разное (43)
Баги и глюки Excel (4)

Ошибка - Cant find project or library

 

Вы сами написали макрос и кому-то выслали. Макрос хороший и рабочий. Вы сами проверили и перепроверили. Но тут Вам сообщают - "Макрос не работает". Выдает ошибку - Can't find project or library. Вы запускаете файл - нет ошибки. Еще раз - нет. Как ни пытаетесь, какие данные не подсовываете, а ошибки такой нет. Вы уверены, что файл рабочий полностью(и верно - ведь у Вас работает), а Вам пытаются доказать обратное. Вы начинаете долго объяснять как пользоваться, что делать и т.д. и т.п. Ошибка не исчезает. Что делать-то? В чем проблема? Даже офис переустановили - у Вас работает, у них нет. А проблема проста: как и любой программе, VBA нужно иметь свой набор библиотек и компонентов, посредством которых он взаимодействует с Excel(и не только). И в разных версиях Excel эти библиотеки и компоненты могут различаться. И когда Вы делаете у себя программу, то VBA ставит ссылку(или же Вы сами) на какой-либо компонент либо библиотеку, которая может отсутствовать на другом компьютере. Вот тогда и появляется эта ошибка. Что же делать? Все очень просто:

  1. Открываете редактор VBA
  2. Идете в Tools-References
  3. Находите там все пункты, напротив которых красуется MISSING. Снимаете с них галочки.
  4. Жмете Ок.
  5. Сохраняете файл.

Эти действия необходимо проделать, когда выполнение кода прервано и ни один код проекта не выполняется. Возможно, придется перезапустить Excel. И все это должен проделать человек, у которого данная ошибка возникла. Это не всегда удобно. А поэтому лично я рекомендовал бы не использовать сторонние библиотеки и раннее связывание, если это не вызвано необходимостью. Всегда проверяйте ссылки в файлах перед отправкой получателю. Оставьте там лишь те ссылки, которые необходимы, либо которые присутствуют на всех версиях. Смело можно оставлять следующие(это касается именно VBA-Excel):

  • Visual Basic for application(эту ссылку Вы попросту не сможете отключить);
  • Microsoft Excel XX.0 Object Library(вместо X версия приложения - 12, 11 и т.д.)-эту ссылку Вы не сможете отключить;
  • Microsoft Forms X.0 Object Library(эту ссылку Вы не сможете отключить);
  • OLE Automation(хотя она тоже не нужна -  но и вреда никакого).

Может я перечислил не все - но эти точно имеют полную совместимость между разными версиями Excel.

Еще, для автоматического поиска и отключения ошибочных ссылок на такие библиотеки можно делать и макросом:

Sub Remove_MISSING()
    Dim oReferences As Object, oRef As Object
    Set oReferences = ThisWorkbook.VBProject.References
    For Each oRef In oReferences
        If (oRef.IsBroken) Then oReferences.Remove Reference:=oRef
    Next
End Sub

Но для работы этого макроса необходимо:

  1. проставить доверие к проекту VBA:
    Excel 2010-2019 - Файл-Параметры-Центр управления безопасностью-Параметры макросов-поставить галочку "Доверять доступ к объектной модели проектов VBA"
    Excel 2007 - Кнопка Офис-Параметры Excel-Центр управления безопасностью-Параметры макросов-поставить галочку "Доверять доступ к объектной модели проектов VBA"
    Excel 2003- Сервис - Параметры-вкладка Безопасность-Параметры макросов-Доверять доступ к Visual Basic Project
  2. проект VBA не должен быть защищен.

Так же Can't find project or library возникает если у Вас просто не подключена какая-либо библиотека, которая используется в коде. Тогда не будет MISSING. Надо просто определить, в какую библиотеку входит константа, объект или свойство, которое выделяет редактор при выдаче ошибки, и подключить эту библиотеку.
Например, есть такой кусок кода:

Sub CreateWordDoc()
    Dim oWordApp As Word.Application
    Set oWordApp = New Word.Application
    oWordApp.Documents.Add

если библиотека Microsoft Excel XX.0 Object Library(вместо XX версия приложения - 11, 12, 16 и т.д.) не подключена, то будет подсвечена строка oWordApp As Word.Application.


Статья помогла? Поделись ссылкой с друзьями!
  Плейлист   Видеоуроки

Поиск по меткам

Access apple watch Multex Power Query и Power BI VBA управление кодами Бесплатные надстройки Дата и время Записки ИП Надстройки Печать Политика Конфиденциальности Почта Программы Работа с приложениями Разработка приложений Росстат Тренинги и вебинары Финансовые Форматирование Функции Excel акции MulTEx ссылки статистика
Обсуждение: 46 комментариев
  1. Bolgarin:

    Огромное спасибо!!!
    Вчера почти целый день воевал с этим Can’t find project or library!!!
    На форумах фигню всяку пишут. А тут всё просто и понятно!!!
    Еще раз огромное спасибо!!!

  2. Александр:

    Да спасибо большое полностью согласен с предыдущим комментарием! Нужно было сразу так запрос поставить в поиске! Все работает! Я знал, что это пустяковая проблема но не знал как её решить. Спасибо этому сайту!

  3. Kyra:

    Поправка:
    "Microsoft Excel XX.0 Object Library" - не знаю, как с Excel XX, но у меня только что не хотел работать написанный в Excel макрос (под одними и теми же операционками, под одними и теми же офисами) из-за Microsoft Word 12.0 Object Library, так что их полная совместимость всё-таки под вопросом.

  4. Правильно. Потому что для Excel библиотека Word является сторонней. Т.е. подключаемой извне. Так же как в данном случае будет и с библиотекой Excel, если работаете в Word-е. Почему так. Потому что запуская Excel Вы не можете работать в VBA без подключенной к нему библиотеке «Microsoft Excel XX.0 Object Library» и автоматом подключается та библиотека Excel, которая доступна из запущенной версии Excel.

  5. большое спасибо! Очень доступно написано! Сработало даже с вба в solidworks!

  6. Денис:

    Спасибо огромное!
    очень досупно и по существу

  7. Георгий:

    Может я краб-криворукий, но я никак не могу найти пункты, напротив которых красуется MISSING.

  8. Георгий - а с чего Вы взяли, что они у Вас обязательно должны быть?

  9. Георгий:

    @Дмитрий(Админ)
    Ну исходя из Вашего поста.
    У меня просто при открытии екселя первым делом выскакивает сообщение "could not load an object because it is not available on this machine" Вот и ищу пути возможного решения.

  10. Георгий, а Вас не смутило, что статья совершенно про другую ошибку? Какое отношение она должна иметь к Вашей проблеме?
    У Вас проблема в том, что в книге, которую Вы загружаете, используется компонент, который отсутствует на Вашем ПК и поэтому не может быть загружен. Вам необходимо узнать, что это за объект, в какой библиотеке типов содержится, скачать эту библиотеку и зарегистрировать на ПК.

Поделитесь своим мнением

Комментарии, не имеющие отношения к комментируемой статье, могут быть удалены без уведомления и объяснения причин. Если есть вопрос по личной проблеме - добро пожаловать на Форум


Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Тренинги

Заказать
Юридическая информация

Использование материалов сайта

Политика Конфиденциальности

ИП Щербаков Дмитрий Валентинович
ОГРНИП: 318502700083307
ИНН: 504013350772

Наши партнеры

Перейти
Перейти

Счетчики

Рейтинг@Mail.ru Яндекс.Метрика
© 2022 Excel для всех   Войти