“Не вдається знайти проект чи бібліотеку” для стандартних функцій VBA


80

Отже, мені доводиться запускати чужий додаток excel на своєму ПК, і я отримую повідомлення "Не вдається знайти проект або бібліотеку" для стандартних функцій, таких як дата, формат, шістнадцятковий, середній і т.д.

Деякі дослідження показують, що якщо я додаю ці функції до "VBA". як у "VBA.Date", тоді це буде працювати нормально.

Веб-сторінки припускають, що це пов’язано з моїми посиланнями на проекти в моїй системі, тоді як вони повинні бути в порядку в системі розробника. Я буду деякий час мати справу з цим від інших, і буду розповсюджувати ці програми багатьом іншим, тому мені потрібно зрозуміти, що не так із моєю установкою Excel, яку мені потрібно виправити, або що потрібно змінити xls, щоб він працював у різних системах. Я хотів би уникати, щоб усі користувалися "VBA". як явне посилання, але якщо немає ідеального рішення, я думаю, це те, що нам доведеться зробити.

  • Як зробити "VBA". неявний у властивостях мого проекту / посиланнях / тощо?

-Адам


Ви розробляєте в одній версії Excel і поширюєте серед користувачів іншу версію?
Russ Cam

Це може бути так - я не знаю, яку версію використовують розробники. Я перевірю.
Адам Девіс 03


Мені довелося префіксувати купу функцій за допомогою vba. перед тим, як дозволити мені знайти відсутні бібліотеки.
kztd

Спробуйте відкрити файл за допомогою програми Excel в Інтернеті (Office 365) та зберегти з новою назвою. Це спрацювало для мене!
Шон Маккарті

Відповіді:


64

Я бачив помилки стандартних функцій, якщо не було посилання на зовсім іншу бібліотеку.

У редакторі VBA запустіть команду Compile з меню, а потім перевірте діалогове вікно References, щоб побачити, чи не бракує чогось, і якщо так, спробуйте додати ці бібліотеки.

Загалом, видається гарною практикою скласти повний код VBA, а потім зберегти документ перед розповсюдженням.


4
Я згоден. Відсутні посилання будуть чітко позначені ПРОПУСКАМИ. У вашому випадку, я підозрюю, що це пізніша версія бібліотеки Excel, яку можна обійти із запізненням або вибором попередньої бібліотеки. Я не вірю, що складання коду допоможе з відсутніми посиланнями.
Fionnuala

Хм Я отримую запит на пароль VBAproject. Сюжет потовщується.
Адам Девіс 03

1
Думаю, час знайти оригінального розробника.
Тобі Аллен,

Я просто хотів додати, що у мене теж була ця проблема, але за досить унікальним сценарієм. Деякі машини матимуть усі бібліотеки DLL (включаючи в цьому випадку Acrobat Distiller), а деякі - ні. Мені все ще потрібні були машини без Acrobat DLL для запуску макросів, які не використовували його, і тому вдався до VBA. додавання простору імен для цих функцій. Це вирішило проблему та працювало в обох сценаріях.
Олівер Грей,

Я просто хотів зазначити, що я стикався з тією ж проблемою, жодне з посилань не позначено як ПРОПУСКУ, я не знайшов рішення для нього, але тимчасовим рішенням є: відкрийте діалогове вікно посилання у VBE, нічого не чіпайте просто натисніть OK, і проект VBA повернеться до нормального стану.
Рік

32

У мене була та сама проблема. Це спрацювало для мене:

  • У VB перейдіть до Інструменти »Посилання
  • Зніміть прапорець біля бібліотеки "Crystal Analysis Common Controls 1.0". Або будь-яка бібліотека.
  • Просто залиште ці 5 посилань:
    1. Visual Basic для програм (це бібліотека, яка визначає мову VBA.)
    2. Бібліотека об’єктів Microsoft Excel (Це визначає всі елементи Excel.)
    3. OLE Automation (Це визначає типи для зв’язування та вбудовування документів, а також для автоматизації інших додатків та «підключення» COM-системи, яку Excel використовує для спілкування із зовнішнім світом.)
    4. Microsoft Office (Це визначає речі, загальні для всіх програм Office, такі як командні панелі та елементи керування на панелі команд.)
    5. Microsoft Forms 2.0 Це потрібно, якщо ви використовуєте форму користувача. Ця бібліотека визначає такі речі, як форма користувача та елементи керування, які можна розмістити у формі.
  • Тоді Збережіть.

Для мого мені довелося зняти прапорець біля «Бібліотеки об’єктів MicroSoft MapPoint 19.0», яка не використовувалась у розглянутому макросі, але використовувалася в інших місцях електронної таблиці.
ELW

2
Моїм був "Microsoft Windows Common Controls 6.0 (SP4)", який був присутній на моїй машині Excel 2010, але на ноутбуці з Excel 2013. Крім того, схоже, він використовується (я отримую "Не вдається видалити елемент керування або посилання; у використанні "якщо я зніму його), тож мені потрібно з'ясувати, чим він користується, і позбутися цього ...
Rich

[Виправлення: вищезазначене повинно було сказати " не на ноутбуці ..."] Виявляється, я також не можу видалити посилання на проект на машині, де вона працює. Зараз я спробував видалити його програмно (використовуючи .VBProject.References, зациклювавши їх і викликаючи Remove на поганому, щоб його видалити), і я отримую "Помилка запуску '-2147319779 (8002801d)': Бібліотека об'єкта не зареєстрований »на машині без бібліотеки, і я отримую" помилка виконання "57101": не вдається видалити посилання по замовчуванню "на машині , яка робить є бібліотека подарунок MSComctlLib. Грррр.
Багатий

15

Я зіткнувся з цією точною проблемою і виявив, що на машині користувачів одна з бібліотек, від якої я залежав, у діалоговому вікні посилань була позначена як "ПРОПУСКАЮча". У цьому випадку це була якась бібліотека офісних шрифтів, яка була доступна в моїй версії Office 2007, але не на робочому столі клієнта.

Помилка, яку ви отримуєте, - це повний червоний оселедець (на що вказує divo).

На щастя, я нічого не використовував із бібліотеки, тому мені вдалося повністю видалити це з посилань на XLA. Думаю, розширенням запропонованої найкращої практики divo було б тестування для перевірки XLA на всіх цільових версіях Office (у будь-якому випадку це не погана ідея).


10

У моєму випадку функція була РІЗНОМІСНОЮ, як це було визначено в бібліотеці VBA (присутній у моїх посиланнях), а також у бібліотеці об’єктів Microsoft Office (також присутній). Я видалив бібліотеку об’єктів Microsoft Office і вуаля! Не потрібно використовувати VBA. префікс.


6

У моєму випадку я навіть не міг відкрити "Посилання" у вікні Visual Basic. Я навіть спробував перевстановити Office 365, але це не спрацювало. Нарешті, я спробував вимкнути макроси в налаштуваннях "Центру довіри". Коли я перезапустив Excel, я отримав попереджувальне повідомлення про те, що макроси вимкнені, і коли я натиснув "увімкнути", я більше не отримував повідомлення про помилку.

Пізніше я знову ввімкнув усі макроси в налаштуваннях "Центру довіри", і повідомлення про помилку не відображалося!

Гей, якщо у вас нічого іншого не працює, спробуйте вище; мені це вдалося! :)

Оновлення: Проблема повернулася, і ось як я її «виправила» вдруге :

Я відкрив свою книгу в Excel в Інтернеті (Office 365, у браузері, який і так не підтримує макроси), зберіг її з новою назвою файлу (все ще використовуючи розширення файлу .xlsm) і знову відкрив у настільному програмному забезпеченні. Це спрацювало.


3
Відкриття книги в Інтернеті в Excel - це єдине рішення цієї проблеми, яке працювало дотепер у мене, і, повірте, я спробував все: від безпечного режиму до повторної інсталяції / ремонту Office, до перезавантаження комп’ютера та молитви. Мені б хотілося, щоб я більше зрозумів причину та наслідок, оскільки це трапляється, здавалося б, випадково з робочими .xlsmкнигами з підтримкою макросів , хоча досить рідко - анекдотично, здається, це трапляється частіше із більш складними файлами. Здається, якийсь елемент бібліотеки VBA може бути пошкоджений, але той факт, що Excel Online може це виправити, тоді як інші методи не можуть, це дивно
Mako212

1
Найпростіше виправлення, яке я знайшов досі для цієї дуже прикрої помилки. Я припускаю, що це надходило б від користувачів-співавторів (файли Excel знаходяться на Sharepoint), які мають однакову основну версію Excel, але не однакові незначні оновлення (наприклад, Версія 2101 Збірка 13628.20000 -vs- Версія 2101 Збірка 13624.20002). Це може бути це? Я б дуже хотів до кінця розглянути цю проблему, яка, здається, набагато частіше, оскільки OfficeUploadCenter було видалено корпорацією Майкрософт за останні місяці (що тепер спричиняє багато помилок синхронізації).
flo5783

0

У моєму випадку я перевіряв роботу, виконану на моєму офісному комп’ютері (з встановленим Visio) вдома (без Visio). Незважаючи на те, що VBA, схоже, зациклювався на простих функціях за замовчуванням, проблема полягала в тому, що у мене були посилання на бібліотеки Visio, які все ще активні.


0

Я знайшов посилання на файл програми AVAYA / CMS? Зовсім випадково, це було в MS Access, нічого спільного з AVAYA. У мене є AVAYA на моєму ПК, а у інших немає, тому це пояснює, чому це працювало на моїй машині, а не інші - але не те, як Access пов’язаний з AVAYA. У будь-якому випадку - я просто зняв позначку з посилання, і це, здається, вирішило проблему


0

Навіть коли всі посилання в порядку, проблема з префіксом викликає помилки компіляції.

А як щодо створення підстановки пошуку та заміни для всіх `` вбудованих функцій VBA '' у всіх модулях, наприклад:

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

наприклад, "= Дата" буде замінено на "= VBA.Date".

наприклад "Date (" буде замінено на "VBA.Date (".

(виключаючи "dim t As Date" або "mydate")

Усі функції vba для пошуку та заміни написані тут:

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


-1

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

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

Потім я просто перейменовую файл у zip-файл (резервне копіювання на всякий випадок!), Відкриваю цей zip-файл і видаляю файл xl / vbaProject.bin. Перейменуйте назад у XLSX, і це має бути добре.

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

Це врятувало мене, коли інші методи цього не зробили.

YMMV.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.