Хитрости »
1 Май 2011 177476 просмотров
Представим себе ситуацию — вы написали макрос и кому-то выслали. Макрос хороший, нужный, а главное — рабочий. Вы сами проверили и перепроверили. Но тут вам сообщают — Макрос не работает. Выдает ошибку — Can’t find project or library. Вы запускаете файл — нет ошибки. Перепроверяете все еще несколько раз — нет ошибки и все тут. Как ни пытаетесь, даже проделали все в точности как и другой пользователь — а ошибки нет. Однако у другого пользователя при тех же действиях ошибка не исчезает. Переустановили офис, но ошибка так и не исчезла — у вас работает, у них нет.
Или наоборот — Вы открыли чей-то чужой файл и при попытке выполнить код VBA выдает ошибку Can’t find project or library.
Почему появляется ошибка: как и любой программе, VBA нужно иметь свой набор библиотек и компонентов, посредством которых он взаимодействует с Excel(и не только). И в разных версиях Excel эти библиотеки и компоненты могут различаться. И когда вы делаете у себя программу, то VBA(или вы сами) ставит ссылку на какой-либо компонент либо библиотеку, которая может отсутствовать на другом компьютере. Вот тогда и появляется эта ошибка. Что же делать? Все очень просто:
- Открываем редактор VBA
- Идем в Tools —References
- Находим там все пункты, напротив которых красуется MISSING.
Снимаем с них галочки - Жмем Ок
- Сохраняем файл
Эти действия необходимо проделать, когда выполнение кода прервано и ни один код проекта не выполняется. Возможно, придется перезапустить Excel. Что самое печальное: все это надо проделать на том ПК, на котором данная ошибка возникла. Это не всегда удобно. А поэтому лично я рекомендовал бы не использовать сторонние библиотеки и раннее связывание, если это не вызвано необходимостью
Чуть больше узнать когда и как использовать раннее и позднее связывание можно из этой статьи: Как из Excel обратиться к другому приложению.
Всегда проверяйте ссылки в файлах перед отправкой получателю. Оставьте там лишь те ссылки, которые необходимы, либо которые присутствуют на всех версиях. Смело можно оставлять следующие(это касается именно VBA -Excel):
- Visual Basic for application (эту ссылку отключить нельзя)
- Microsoft Excel XX.0 Object Library (место X версия приложения — 12, 11 и т.д.). Эту ссылку нельзя отключить из Microsoft Excel
- Microsoft Forms X.0 Object Library. Эта ссылка подключается как руками, так и автоматом при первом создании любой UserForm в проекте. Однако отключить её после подключения уже не получится
- OLE Automation. Хотя она далеко не всегда нужна — не будет лишним, если оставить её подключенной. Т.к. она подключается автоматически при создании каждого файла, то некоторые «макрописцы» используют методы из этой библиотеки, даже не подозревая об этом, а потом не могут понять, почему код внезапно отказывается работать(причем ошибка может быть уже другой — вроде «Не найден объект либо метод»)
Может я перечислил не все — но эти точно имеют полную совместимость между разными версиями Excel.
Если все же по какой-то причине есть основания полагать, что в библиотеках могут появиться «битые» ссылки MISSING, можно автоматически найти «битые» ссылки на такие библиотеки и отключить их нехитрым макросом:
Sub Remove_MISSING() Dim oReferences As Object, oRef As Object Set oReferences = ThisWorkbook.VBProject.References For Each oRef In oReferences 'проверяем, является ли эта библиотека сломанной - MISSING If (oRef.IsBroken) Then 'если сломана - отключаем во избежание ошибок oReferences.Remove Reference:=oRef End If Next End Sub
Но для работы этого макроса необходимо:
- проставить доверие к проекту VBA:
Excel 2010-2019 — Файл -Параметры -Центр управления безопасностью-Параметры макросов-поставить галочку «Доверять доступ к объектной модели проектов VBA»
Excel 2007 — Кнопка Офис-Параметры Excel-Центр управления безопасностью-Параметры макросов-поставить галочку «Доверять доступ к объектной модели проектов VBA»
Excel 2003— Сервис — Параметры-вкладка Безопасность-Параметры макросов-Доверять доступ к Visual Basic Project - проект VBA не должен быть защищен
И главное — всегда помните, что ошибка Can’t find project or library может появиться до запуска кода по их отключению(Remove_MISSING). Все зависит от того, что и как применяется в коде и в какой момент идет проверка на «битые» ссылки.
Так же 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. И конечно, надо будет подключить соответствующую библиотеку.
Если используются какие-либо методы из библиотеки и есть вероятность, что библиотека будет отключена — можно попробовать проверить её наличие кодом и либо выдать сообщение, либо подключить библиотеку(для этого надо будет либо знать её GUIDE, либо полный путь к ней на конечном ПК).
На примере стандартной библиотеки OLE Automation(файл библиотеки называется stdole2) приведу коды, которые помогут проверить наличие её среди подключенных и либо показать сообщение либо сразу подключить.
Выдать сообщение — нужно в случаях, если не уверены, что можно вносить подобные изменения в VBAProject(например, если он защищен паролем):
Sub CheckReference() Dim oReferences As Object, oRef As Object, bInst As Boolean Set oReferences = ThisWorkbook.VBProject.References 'проверяем - подключена ли наша библиотека или нет For Each oRef In oReferences If LCase(oRef.Name) = "stdole" Then bInst = True Next 'если не подключена - выводим сообщение If Not bInst Then MsgBox "Не установлена библиотека OLE Automation", vbCritical, "Error" End If End Sub
Если уверены, что можно вносить изменения в VBAProject — то удобнее будет проверить наличие подключенной библиотеки «OLE Automation» и сразу подключить её, используя полный путь к ней(на большинстве ПК этот путь будет совпадать с тем, что в коде):
Sub CheckReferenceAndAdd() Dim oReferences As Object, oRef As Object, bInst As Boolean Set oReferences = ThisWorkbook.VBProject.References 'проверяем - подключена ли наша библиотека или нет For Each oRef In oReferences Debug.Print oRef.Name If LCase(oRef.Name) = "stdole" Then bInst = True Next 'если не подключена - подключаем, указав полный путь и имя библиотеки на ПК If Not bInst Then ThisWorkbook.VBProject.References.AddFromFile "C:WindowsSystem32stdole2.tlb" End If End Sub
Сразу подкину ложку дегтя(предугадывая возможные вопросы): определить автоматически кодом какая именно библиотека не подключена невозможно. Ведь чтобы понять из какой библиотеки метод или свойство — надо откуда-то эту информацию взять. А она внутри той самой библиотеки…Замкнутый круг
Так же см.:
Что необходимо для внесения изменений в проект VBA(макросы) программно
Как защитить проект VBA паролем
Как программно снять пароль с VBA проекта?
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
0 / 0 / 0 Регистрация: 19.01.2016 Сообщений: 2 |
|
1 |
|
27.09.2016, 18:56. Показов 41067. Ответов 5
Здравствуйте, у меня есть файл ексель с макросами, раньше все работало нормально, сейчас открываю и выдает ошибку «Microsoft Visual Basic for Applications» «Сan’t find project or library», далее нажимаю «ок» и Excell закрывается. Читал другие темы, предлагают зайти в VBA — Refences и снять галочки с библиотек MISSING, но не могу, так как не могу открыть файл Раньше на этом же компе этот файл работал без проблем Поможете? Спасибо!
0 |
Заблокирован |
|
27.09.2016, 19:23 |
2 |
Сообщение было отмечено plyacik как решение Решение Открывайте файл с нажатым [Shift]`ом.
1 |
1337 / 308 / 74 Регистрация: 13.11.2008 Сообщений: 635 |
|
27.09.2016, 21:02 |
3 |
далее нажимаю «ок» А нажать Debug или End позволяет? Если да — то жмите End. Файл должен открыться, код остановиться. И тогда уже сможете перейти в код.
1 |
0 / 0 / 0 Регистрация: 19.01.2016 Сообщений: 2 |
|
28.09.2016, 11:32 [ТС] |
4 |
В общем проблема решилась, но не очень разумным способом, нашел комп на котором открылся файл, пересохранил и все решилось. кстати с нажатим Shift’ом тоже получилось, выскочило окно на котором отключил макросы, файл пересохранил и все ок Спасибо!
0 |
0 / 0 / 0 Регистрация: 25.02.2020 Сообщений: 3 |
|
15.08.2020, 22:07 |
5 |
Случилась у меня такая же проблема, и есть там еще один обход.
0 |
0 / 0 / 0 Регистрация: 03.07.2020 Сообщений: 169 |
|
20.04.2021, 11:59 |
6 |
Franky101010, не работает решение по указанной ссылке.
0 |
for some reason in my VBA code in excel, when it gets to a line of code where i am using mid
it says can’t find project or library. what does this mean?
Oorang
6,6001 gold badge34 silver badges52 bronze badges
asked Dec 17, 2009 at 17:59
Alex GordonAlex Gordon
55.8k284 gold badges666 silver badges1051 bronze badges
1
This is due some problem with references within VBA in your workbook.
In the VBA editor, go to ‘Tools-> References’. There you would find a reference with ‘MISSING:’ in front. Uncheck that and your problem should be fixed.
If the missing reference was something like ‘Visual Basic for Application’ or ‘Microsoft Office Object library, you should look for a reference that has no ‘MISSING:’ text and select this.
answered Dec 17, 2009 at 18:08
2
Go to the VBA editor (e.g. by using ALT-F11).
Click on Tools->References
If any references are marked MISSING then correct those missing references. This should fix your problem.
answered Dec 17, 2009 at 18:07
hawbslhawbsl
15.1k24 gold badges73 silver badges113 bronze badges
2
Do you have any references to any library that is missing?
I’ve found that any bad reference — even when not used in the code — can throw the entire system off, so that even built-in functions are mapped wrong.
answered Dec 17, 2009 at 18:04
I would go old skool and remove the structure manager activex control.
I gave similar instructions on how to do this are here!
Have a look at: regsvr32
- Close Excel
- Click Start / Run / cmd
- Type
regsvr32 /u [path of old dll]/[filename]
Eg:
regsvr32 /u c:windowssystem32file.dll
(You can add /q to hide all messages)
Good luck!
answered Dec 18, 2009 at 2:48
Christian PayneChristian Payne
7,0725 gold badges38 silver badges59 bronze badges
«Click on Tools->References
If any references are marked MISSING then correct those missing references. This should fix your problem.»
It solved my problem (Left function throwing error «can’t find project or library).
answered Sep 7, 2016 at 15:35
Сообщение будет показано после одобрения модератором.
lex Пользователь Сообщений: 71 |
Доброй ночи! Нужна помощь мудрецов. |
Alt-F11 / меню Tools / References / снять флажок с Ref Edit Control |
|
lex Пользователь Сообщений: 71 |
Спасибо! Заработало! А в чем прикол этого флажка? И почему работало только на одном компе? |
lex Пользователь Сообщений: 71 |
|
seergy Пользователь Сообщений: 64 |
#5 29.07.2009 08:09:17 так и не понял чем это лечить програмно. Например, если проект защищён и переходит от одного компа к другому… |
Сообщение будет показано после одобрения модератором.
While working on the Microsoft Excel document it is likely to encounter a Compile error can’t find project or library Excel. Thus, if you are one such user, who is also facing the same error when using VBA for the Macros, keep on reading this post.
In this comprehensive post, you are going to learn how to fix Compile error in Excel macro using both manual as well as automatic solutions.
Quick Solutions |
Step-By-Step Solutions Guide |
Way 1- Look for Missing Reference |
Open Excel document >> press ALT and F11 keys on your keyboard…Complete Steps |
Way 2- Registering the Library File |
Go to the “Start” menu >> type “CMD” >> click on “Command Prompt (Admin)”…Complete Steps |
Way 3- Disable Missing Type Or Object Library Option |
Press the ALT and F11 keys on your keyboard to switch to the Visual Basic Editor…Complete Steps |
Way 4- Unregister & Reregister a Library |
Press the “Windows + R” keys >> type Regsvr32.exe…Complete Steps |
To repair corrupted Excel file data, we recommend this tool:
This software will prevent Excel workbook data such as BI data, financial reports & other analytical information from corruption and data loss. With this software you can rebuild corrupt Excel files and restore every single visual representation & dataset to its original, intact state in 3 easy steps:
- Download Excel File Repair Tool rated Excellent by Softpedia, Softonic & CNET.
- Select the corrupt Excel file (XLS, XLSX) & click Repair to initiate the repair process.
- Preview the repaired files and click Save File to save the files at desired location.
What Does Excel Can’t Find Project or Library Error Mean?
When Compile error: can’t find project or library occurs then it simply means that you can’t perform any operation in your Excel document that needs VBA. Below you can see the real interface of this Compile error:
In simple words, we can say, this error is faced by the users while using the VBA (Visual Basic Applications) for the macros to perform some assigned tasks.
To fix Excel Can’t Find Project or Library error you have to search for the missing Excel VBA References and after that uncheck Excel references.
Way 1- Look for Missing Reference
The very first method that you should try to fix this error in Excel is to look for missing references.
Here are the complete steps to do this:
- Open your Excel application and then press ALT and F11 keys on your keyboard.
- On the opened VBA window go to the tools >> References dialog box.
- Choose the missing reference and then start your Object Browser.
- Use the Browse dialog box to make search for your missing reference.
- Hit the OK.
- Repeat the preceding steps until all missing references are resolved.
Also Read: [6 Fixes] Cannot Edit A Macro On A Hidden Workbook
Way 2- Registering the Library File
Installing any new software on your PC sometimes de-registers some specific libraries. In that case, registering the library file manually can help you to fix can’t find project or library VBA.
To do this, follow the below steps:
- On your Windows PC, go to the “Start” menu.
- Type “CMD” >> click on “Command Prompt (Admin)”.
- After this, click on “Run as Administrator”.
- Once a CMD window opens on your screen, you have to type the REGSVR32 “Path of a DLL File which you need to register”. (E.g.- REGSVR32 “C:Program FilesBlackbaudThe Raisers Edge 7DLLRE7Outlook.dll”).
Doing this will help you to register the chosen library file without any error.
Way 3- Disable Missing Type Or Object Library Option
Commonly, the application has lost the reference to an object or type library resulting in the above error while using barcode macro and native VBA Functions.
To fix the Macros Compile error, follow the steps:
- Open the Microsoft Excel file that is giving you the error message.
- Make sure the Excel sheet or Datasheet that has the buttons or functions in question is selected.
- Simultaneously press the ALT and F11 keys on your keyboard to switch to the Visual Basic Editor in a new window (as seen below).
- In the new Visual Basic Editor window, click on the Tools menu at the top of the screen, and then click.
- A References dialogue box will display on the screen. A missing type or object library is indicated by “MISSING:” followed by the name of the missing type or object library (an example is MISSING: Microsoft Excel 10.0 Object Library, as seen below).
- If there is a checkmark in the checkbox next to the missing type or object library, then un-check the checkbox.
- Click OK > Exit the Visual Basic Editor.
- Save the original Excel file.
- Try using the buttons or functions in question that previously didn’t work and they should now work normally.
An alternative for removing the reference is to restore the referenced file to the path specified in the references dialog box. If the referenced file is in a new location, clear the “Missing: ”reference and create a new reference to the file in its new location.
Way 4- Unregister & Reregister a Library to Fix Compile Error Can’t Find Project or Library Excel
Many users have reported that they solved Excel compile error: can’t find project or library by unregistering & re-registering the library file.
For this, follow the below steps:
- First, press the “Windows + R” keys together to open Run box >> type Regsvr32.exe.
- After this press Enter & type the complete path of a missing/lost library file. (E.g.- “regsvr32 “c:program filescommon filesmicrosoft shareddaodao360.dll”).
Once you are done and if the error still persists then simply unregister a library file.
Here’s how to do so:
Replace the “Regsvr32.exe” with “regsvr32 -u” & paste a path of a library again.
Also Read: Fix VBA Error 400 Running An Excel Macro
How to Repair Corrupt MS Excel File?
The above-mentioned manual solution will most probably sort out the issues and mentioned errors from the Excel file. But for any other corruption or file damage most suitable option would be to make use of the MS Excel Repair Tool.
This is is highly competent in restoring corrupt Excel files and also retrieves data from worksheets like cell comments, charts, other data, and worksheet properties. This is a professionally designed program that can easily repair .xls and .xlsx files.
* Free version of the product only previews recoverable data.
Steps to Utilize MS Excel Repair Tool:
Why Excel Is Showing Can’t Find Project Or Library Error?
- This error is usually caused by the user’s Excel program. The reason is that your program is referenced to such object or library which is missing. Due to which your Excel program is unable to find it. So the program is unable to use VB or Micro-based functions or buttons. This leads to an error message appearance.
- Since there are standard libraries so missing a library sounds like a bit of the last chance. Another reason for this, in that case, is that library miss-match occurs. For example, the user may have a library version of 2007 but the reference in the code may be looking for the 2010 version of that specific library. So the program fails to find the corresponding library thus issuing the compilation error.
- Sometimes a library may be toggled on or toggled off which causes a missing link issue between the library and program code. Therefore the compilation error occurs.
- Another reason for the error message is concerning the use of Microsoft XP which includes a reference to web service in the VBA project. When you run this project in MS Office 2003, the same compilation error appears. The reason is the same i.e. object or type of library is missing (or not found).
Conclusion:
Hope doing this will help you to fix the error Can’t find project or library Excel 2016, but if not then make use of the automatic third-party tool, this will help you to solve the error.
I tried my best to provide ample information about vba can’t find project or library errors and fixes.
However, if you are having any additional fixes or any queries then please share them with us.
Good Luck…
Priyanka is an entrepreneur & content marketing expert. She writes tech blogs and has expertise in MS Office, Excel, and other tech subjects. Her distinctive art of presenting tech information in the easy-to-understand language is very impressive. When not writing, she loves unplanned travels.
- Remove From My Forums
-
Question
-
Recently installed MSOffice 2010 Pro trial version and receive the following Macro error in Excel: compile error. Can’t find project or library. The Excel file was created with Office 2003 and runs okay with the Professional version of 2003,
but not the SMBS Excel 2003. I tried setting the macro security level to low in 2010, however, the macro still will not run.
Answers
-
Hi,
Most likely, the application has lost the reference to an object or type library resulting in the above error when using
Barcode Macros & Native VBA Functions.
The problem may be resolved as follows:1.
Open the database or application.
2.
Open a module in Design view or press ALT+F11 to switch to the Visual Basic Editor.
3.
On the Tools menu, click References.
4.
Clear the check box for the type library or object library marked as «Missing:»
An alternative to removing the reference is to restore the referenced file to the path specified in the References dialog box.
If the referenced file is in a new location, clear the «Missing:» reference and create a new reference to the file in its new location.
Microsoft has documented this issue:
VBA Functions Break in Database with Missing ReferencesRegards,
Harry Yuan
-
Proposed as answer by
Thursday, October 14, 2010 8:41 AM
-
Marked as answer by
sacjac
Thursday, October 14, 2010 1:10 PM
-
Proposed as answer by
Return to VBA Code Examples
This article will demonstrate how to fix the VBA Compile Error: Can’t Find Project or Library.
The VBA Compile Error – Can’t Find Project or Library occurs when your VBA code refers to an external project or library that cannot be found on the user’s PC. To fix this, make sure that the reference exists in the correct location.
Add Reference to VBA Project
If you have referred to an external project or library in your VBA code, you need to reference the project or library.
Let us have a look at the following code example:
Sub CreateWordDocument()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
'open word
Set wdApp = New Word.Application
'create a document
Set wdDoc = wdApp.Documents.Add
'type some stuff
wdApp.Selection.TypeText "Good morning!"
'show word on the screen
wdApp.Visible = True
End Sub
This code is referring to the Word object.
Set wdApp = New Word.Application
In order for this code to run correctly, a reference to the Word object library needs to be added to the VBA project.
In the Menu, select Tools > References.
Scroll down through the list of references to find the one you want to use. In this case, the Microsoft Word 16.0 Object Library.
(1) Select the reference and then (2) click OK and then Save your File.
Finding a Missing Reference
If your VBA project does contain a reference such as shown above, but the reference file is missing, when you try to compile the VBA code, you will get the compile error – Can’t find project or library.
In the Menu, select Tools > References.
If a reference is selected, but the file for that reference is missing, then it will show the word “MISSING” in front of the available reference. The file for the reference has been registered on the machine but the actual file has either been removed from the machine, is corrupt so cannot be used or has been moved from the location registered.
To solve this problem, remove the reference from the VBA Project by deselecting the reference and then clicking on OK.
If you then open the reference box again, the missing reference will be removed and you should be able to compile your VBA code.
Of course, if you are using that reference in your code (ie Word. Application), then when you re-compile the VBA Project, you may end up with another error!
You will need to find the missing file reference, make sure that it is registered on your computer, and make sure it’s in the correct location as indicated in the Location path at the bottom of the dialog box.
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Learn More!