Я работаю над таблицей в Excel 2016, но когда я хочу, чтобы мои коллеги протестировали ее на своей машине, работающей в Excel 2013, возникает ошибка:
"Can't find project or library error"
Я знаю, что вы можете легко избавиться от этой ошибки, перейдя в Инструменты-> Ссылки и сняв отметку с библиотеки "MISSING".
Но проблема в том, что это слишком сложно, когда у вас слишком много людей, которые не обязательно знают, что такое VBA, и которые злятся, когда просят их следовать упрощенному руководству.
Есть ли способ избавиться от всех недостающих ссылок с самого начала?
Нет, когда снимают галочку, все работает нормально, ошибок не осталось. Означает ли это, что я должен объявить все свои переменные как Object?
Если он ничего не делает в вашем коде, зачем вы вообще его используете?
Если он не используется, вы можете просто удалить ссылку в своем файле и распространить ее.
Я импортирую только библиотеки, которые нельзя снять. Я не знаю, какой из них вызывает проблему (может быть, Microsoft Excel 2016), но я думаю, что VBA повторно импортирует рабочий в соответствии с версией Excel, как только вы снимите отметку с отсутствующего, поэтому он отлично работает в конце.





Да, это возможно.
Однако вы столкнетесь с множеством новых проблем, поскольку вам понадобится еще одна ссылка на «Microsoft Visual Basic для расширяемости приложений» (для доступа к объектам VBIDE), и вам потребуются настройки безопасности, чтобы включить «Доверие» Доступ к проекту Visual Basic »(который по уважительным причинам отключен по умолчанию).
Что, как говорится: Если вы соблюдаете эти два критерия, вы можете запустить следующую процедуру, чтобы удалить все неработающие ссылки из активной книги:
Option Explicit
Sub RemoveReferences()
Dim VBAEditor As VBIDE.VBE
Dim vbProj As VBIDE.VBProject
Dim chkRef As VBIDE.Reference
Set VBAEditor = Application.VBE
Set vbProj = ActiveWorkbook.VBProject
For Each chkRef In vbProj.References
If chkRef.IsBroken Then
vbProj.References.Remove chkRef
End If
Next
Set vbProj = Nothing
Set VBAEditor = Nothing
End Sub
Спасибо за вашу помощь! Я уже сталкивался с чем-то вроде этого, но проблема, как вы сказали, в том, что требуется еще одна переделка на машине моего коллеги, которую они не хотели бы делать ...
Что ж, это (единственное) решение проблемы, поставленной в вопросе. Проблема здесь в том, что вы делаете что-то, на что наложены ограничения (опять же: по уважительным причинам). Если это вариант, переключитесь на полную VS и создайте свое решение как надстройку в vb.net или C#. В качестве альтернативы, проинформируйте своих коллег о том, что Зачем эти изменения необходимы.
У них действительно установлена библиотека? Если да, просто переключите позднюю привязку. Если он не установлен, разве недостающая ссылка не приведет к ошибке время выполнения?