Импорт, экспорт и удаление модуля в редакторе VBA. Программный экспорт-импорт модуля из одной рабочей книги Excel в другую с помощью кода VBA Excel.
1. Откройте рабочую книгу Excel, в которую планируете импортировать модуль. Для импорта модуля в Личную книгу макросов, откройте любую книгу.
2. Откройте редактор VBA сочетанием клавиш Alt+F11 (в этом сочетании используется левая клавиша Alt). Обратите внимание на наличие в окне редактора VBA окна проводника «Project-VBAProject», обычно, расположенного слева. При отсутствии, отобразите его через главное меню, выбрав «View» — «Project Explorer».
3. В окне проводника «Project-VBAProject» найдите строку «VBAProject (ИмяКниги)», где «ИмяКниги» — это имя книги, в которую вы собираетесь импортировать модуль. Если вы желаете импортировать модуль в Личную книгу макросов, строка называется «VBAProject (PERSONAL.XLSB)». Если у вас нет Личной книги макросов — создайте ее.
4. У выбранной строки раскройте все крестики слева.
5. Откройте контекстное меню, кликнув правой кнопкой мыши на строке «ЭтаКнига», и выберите в нем пункт «Import File…».
6. В открывшемся окне выбора файла найдите импортируемый модуль с расширением .bas и дважды кликните по нему, или кликните один раз и нажмите кнопку «Открыть». Модуль импортирован и отобразился в проводнике под именем «Module» с очередным номером, независимо от имени импортируемого файла.
7. Если вы импортировали модуль в Книгу Excel 2007-2016 с расширением .xlsx, ее необходимо будет пересохранить как «Книга Excel с поддержкой макросов (.xlsm)», иначе импортированный модуль не сохранится.
Инструкцию с картинками вы можете посмотреть здесь в параграфе «Пользовательская функция «СуммаПрописью».
Экспорт модуля в редакторе VBA
1. Откройте рабочую книгу Excel, из которой вы планируете экспортировать модуль. Для экспорта модуля из Личной книги макросов, откройте любую книгу.
2. Откройте редактор VBA сочетанием клавиш Alt+F11 и в окне проводника «Project-VBAProject» найдите экспортируемый модуль.
3. Откройте контекстное меню, кликнув правой кнопкой мыши на экспортируемом модуле, и выберите в нем пункт «Export File…».
4. В открывшемся окне выберите папку, куда следует сохранить экспортируемый модуль, если необходимо, измените название сохраняемого файла, и нажмите кнопку «Сохранить». Модуль экспортирован и отобразился в выбранном каталоге с указанным именем и расширением .bas.
Удаление модуля в редакторе VBA
1. В окне проводника «Project-VBAProject» найдите удаляемый модуль.
2. Откройте контекстное меню, кликнув правой кнопкой мыши на удаляемом модуле, и выберите в нем пункт «Remove Module…» с номером удаляемого модуля.
3. VBA Excel предложит экспортировать модуль перед удалением, нажмите «Да», если хотите сохранить модуль, или «Нет», чтобы удалить без сохранения.
Как удалить стандартный модуль с помощью кода VBA Excel, смотрите в последнем параграфе статьи Программное создание модуля.
Программный экспорт-импорт модуля
Пример программного экспорта стандартного модуля "Module1"
из книги "Книга2.xlsm"
и импорта его в книгу "Книга3.xlsm"
с помощью кода VBA Excel:
Sub ExportImportModule() Workbooks(«Книга2.xlsm»).VBProject.VBComponents(«Module1»).Export «C:ТестоваяModule1.bas» Workbooks(«Книга3.xlsm»).VBProject.VBComponents.Import «C:ТестоваяModule1.bas» End Sub |
Если в книге "Книга3.xlsm"
уже присутствует модуль с именем "Module1"
, то импортированному модулю будет присвоен другой номер.
Программное удаление модуля
Код VBA Excel для программного удаления стандартного модуля с именем "Module24"
:
Sub RemoveModule() With ThisWorkbook.VBProject .VBComponents.Remove .VBComponents(«Module24») End With End Sub |
Замените имя "Module24"
на имя своего модуля, который вы хотите безвозвратно удалить.
Have you ever seen a text file in a notepad or a source code file in visual studio code? These all are just basic files where you can write some code or information. Similarly, we have modules in excel, each module has its code window, where you can write some code and allow it to automate your repetitive tasks. There can be multiple modules. We can create, rename or delete a module in just a few mouse clicks. In this article, we will learn how to create and delete a module in excel VBA.
Module and its types
A module is a set of instructions written in a VBA editor. There are broadly 5 types of modules in VBA:
- General-Purpose Module: It is the simplest type of module. If we record a macro that will get stored in a module. This is called a general-purpose module. We can simply write code in the VBA editor also.
- Workbook Module: Workbook module handles the events happening at a workbook level. For example, opening, closing or renaming a workbook.
- Worksheet Module: The worksheet module is driven by the events happening at the worksheet level. For example, activating a worksheet or flipping between different worksheets. Automating the task such as merging the worksheets.
- Userform Module: Userform Module is a way to input a piece of information from the user. It is one of the most useful tools of VBA.
- Class Module: It’s similar to the classes in other languages. We create our objects. VBA has built-in objects such as the Collection, Workbook, etc. The inheritance in VBA is minimal and much more restricted than in other languages.
Creating a VBA module
Following are the steps to create a VBA module,
Step 1: Go to Developer Tab, and select Visual Basic in the menu bar.
Step 2: A VBA editor appears. We can see the information on all the worksheets and workbooks in the editor tab.
Step 3: Go to Insert Tab and select Module.
Step 4: A module name module1 is created.
Deleting a VBA module
Following are the steps to delete a VBA module,
Step 1: Given 3 modules name module1, module2, and module3. Delete module3 from the Modules.
Step 2: Right-click on module3 and click on Remove module3. A dialogue box appears.
Step 3: The dialogue box tells whether you want to export the given module or not. If you, do not want to save the module on your PC, then click on No.
Step 4: Module3 has been deleted from the VBA editor.
При первой вставке модуля в VBA ему автоматически будет присвоено имя «Модуль1», А последующий модуль станет Module2, Module3 и т. Д. Аналогичным образом, когда вы вставляете пользовательскую форму, она будет называться UserForm1, UserForm2 и т. Д.
Переименование модуля
Чтобы переименовать модуль или форму, вам необходимо включить окно свойств в вашем VBE.
Если окна свойств не отображаются, нажмите F4 или перейдите в строку меню и выберите Вид, Характеристики Окно.
- Щелкните модуль, который хотите переименовать, в Обозреватель проекта.
- Выберите свойство name в Окно свойств (модуль будет иметь только это свойство; форма имеет несколько свойств)
3. Удалите имя модуля (в данном случае Module1) и введите имя, которое вы хотите назвать своим модулем.
4. Нажмите Enter, чтобы переименовать модуль.
Таким же образом вы переименовываете свои формы.
Удаление модуля
Иногда вам может потребоваться удалить модуль или форму, которые вам больше не нужны.
Щелкните правой кнопкой мыши модуль или форму, которые вы хотите удалить, чтобы отобразить контекстное меню, вызываемое правой кнопкой мыши.
Нажмите Удалять (в этом случае Модуль2)
ИЛИ
Нажать на Файл меню, а затем нажмите Удалите (Module2).
Появится окно с предупреждением, в котором вас спросят, хотите ли вы экспортировать модуль или форму, прежде чем удалять их. Экспорт модуля или формы позволяет сохранить его как отдельный файл для использования в другом проекте Excel в другое время.
Чаще всего, когда вы удаляете модуль или форму, это происходит потому, что он вам не нужен, поэтому нажмите Нет.
Именование модулей и форм
Рекомендуется переименовывать модули и формы, чтобы дать им более понятные имена. Например, если UserForm1 будет формой для ввода сведений о счете, мы можем переименовать ее в frmInvoices. Точно так же, если Module1 будет использоваться для хранения некоторых общих функций, которые будут повторно использоваться в вашем коде, вы можете переименовать его в basGeneral или modGeneral (в зависимости от того, какие соглашения об именах вы хотите использовать).
Рекомендуется соблюдать соглашения об именах как при именовании ваших модулей и форм, так и переменных, которые вы используете в своем коде. Вы заметите, что я написал первые 3 буквы имени модуля или формы в нижнем регистре и поставил заглавную букву в начале описания модуля или формы. Это известно как CamelCase (https://en.wikipedia.org/wiki/Camel_case) и является хорошей привычкой при именовании объектов. Я также использовал соглашение об именах Лешинского, которое часто используется программистами Visual Basic. (https://en.wikipedia.org/wiki/Leszynski_naming_convention).
Вы поможете развитию сайта, поделившись страницей с друзьями
Можно ли из списка модулей (в окне проекта) удалить те, которые пусты и не нужны, а также формы, которые не будут использоваться |
|
Inter_E Пользователь Сообщений: 399 |
Посмотри тему, недавно у меня было «Чистка Кодов». Там все подробно описано! Желаю удачи! With my best regards, Inter_E |
я не могу ту тему просмотреть (((((((, вы не могли бы мне еще раз описание прислать. Та тема от 26/06 10:19. Заранее благодарю |
|
Да чего там смотреть — все что не нужно или пустые смело удаляйте. Почистите кукисы и все темы будут доступны |
|
Inter_E Пользователь Сообщений: 399 |
да Dik, прав! With my best regards, Inter_E |
ЯЮ понимаю что смело, но я их просто чищу, а сам модуль никак не могу удалить, только добавить новый |
|
Правой кнопкой по модулю, Remove, Нет. |
|
Inter_E Пользователь Сообщений: 399 |
я вам говорю вот в теме которую я создал «Чистка Кодов», как раз таки модуль удаляет!!!!, With my best regards, Inter_E |
просто мороки много с импортом файлов, потом еще удалять из созданной папки, короче говоря спасибо Inter_E. Просмотрела наконец ту тему ))))))). Просто кукисы как-то не хотели удаляться ))))))))))). СПАСИБОЧКИ. Твой вариант просто гуд |
|
Inter_E…..to….Mario Гость |
можете мне прислать чистку макросов! заранее спасибо! |
Mario, читайте внимательно: Правой кнопкой по модулю, Remove, Нет. Просто нажмите НЕТ и накакой мороки. |
|
если честно я сам не пробовал, мне кажется Pavel прислал! |
|
Павел присылал в той теме ссылку, но там нужно поковыряться http://msoffice.nm.ru/faq/macros/module.htm#faq47 |
|
блин, ну новичек я ((((((. Я вообще подумала вы мне замите ))))). Типа не пробовала??? нет??? СПАСИБО )))) |
|
Удаление строк из модуля ИмяПроекта..VBProject.VBComponents.Item(«Имя модуля»).CodeModule.DeleteLines(№,Количество) Где |
|
Определение количества строк в модуле ИмяПроекта.VBProject.VBComponents.Item(«Имя модуля»).CodeModule.CountOfLines Удаление модулей проекта ИмяПроекта.VBProject.VBComponents.Remove _ ИмяПроекта.VBProject.VBComponents.Item(«ИмяМодуля») |
|
Inter_E Пользователь Сообщений: 399 |
Спасибо! А как по названию макроса улалять код с модуля или с листа или с этакнига? With my best regards, Inter_E |
Inter_E, а чем вам не подошёл макрос, который я вам уже давал неделю назад? ‘Source: http://msoffice.nm.ru/faq/macros/module.htm#faq47 Sub DeleteProcedure() |
|
………..to Pavel55 Гость |
Спасибо, Pavel! Пока я тот не использовал, там модули удалялись, а вот это самый раз будет наверно, когда я применю! |
{quote}{login=………..to Pavel55}{date=03.07.2008 12:26}{thema=………..to Pavel55}{post}Спасибо, Pavel! Пока я тот не использовал, там модули удалялись, а вот это самый раз будет наверно, когда я применю! Подскажите, пожалуйста, мне нужно удалить модуль, в Имя_проекта.Модуль есть свойство только сохранить этот модуль, ничего похожего на удаление нет. |
|
Serge Пользователь Сообщений: 11308 |
|
{quote}{login=Serge 007}{date=22.03.2010 01:53}{thema=}{post}А как же Remove?{/post}{/quote} Remove нет! |
|
{quote}{login=The_Prist}{date=22.03.2010 02:07}{thema=}{post}Потому что необходимо указать имя или индекс удаляемого элемента: ThisWorkbook.VBProject.VBComponents.Remove ThisWorkbook.VBProject.VBComponents(«Module2»){/post}{/quote} А нужно прямо всю строчку эту писать? У меня пишет, что Application-definded or object definded error |
|
{quote}{login=The_Prist}{date=22.03.2010 02:18}{thema=Re: Re: }{post}{quote}{login=}{date=22.03.2010 02:15}{thema=Re: }{post}А нужно прямо всю строчку эту писать? У меня пишет, что Application-definded or object definded error{/post}{/quote}А я-то откуда знаю, что Вам там писать? У Вас есть такой модуль = «Module2»? Напишите как Вы удаляете по моему примеру и какой именно модуль хотите удалить.{/post}{/quote} Вместо Module2 я конечно вставляю название своего модуля. Оно у меня называется CSV |
|
{quote}{login=The_Prist}{date=22.03.2010 02:29}{thema=}{post}Еще раз: НАПИШИТЕ КАК ВЫ УДАЛЯЕТЕ МОДУЛЬ СОГЛАСНО МОЕГО ПРИМЕРА{/post}{/quote} Private Sub DeleteModule() |
|
{quote}{login=The_Prist}{date=22.03.2010 02:37}{thema=}{post}Итак, модуль так и называется — CSV_EDI. Проставлена ли галка доверия к проекту в параметрах?{/post}{/quote} Модуль обычный, да, все в 1й книге! Если галка доверия, это Dockable, то она есть |
|
{quote}{login=The_Prist}{date=22.03.2010 03:04}{thema=Re: Re: }{post}{quote}{login=}{date=22.03.2010 02:57}{thema=Re: }{post}Если галка доверия, это Dockable, то она есть{/post}{/quote}Нет, не Dockable. Excel 2007 — Меню-Параметры Excel-Центр управления безопасностью-Параметры макросов-поставить галочку «Доверять доступ к объектной модели проектов VBA»; Excel 2003 — Сервис — Параметры-вкладка Безопасность-Парметры макросов-Доверять доступ к Visual Basic Project{/post}{/quote} А в 2003 Экселе? |
|
Guest Гость |
#29 22.03.2010 15:26:17 {quote}{login=The_Prist}{date=22.03.2010 03:21}{thema=Re: Re: Re: Re: }{post}{quote}{login=}{date=22.03.2010 03:19}{thema=Re: Re: Re: }{post}А в 2003 Экселе?{/post}{/quote}Вы читали хоть мой пост Выше? Там для обеих версий написано!{/post}{/quote} СПАСИБО!!!! ВЫ ГЕНИЙ! |
Формулировка задачи:
Многих мучает вопрос как с помощью команды макроса в Excel удалить сам макрос или один из его модулей.
Варианты такие:
*******************
Sub DeleteAllLines() ‘ удаляет все что написано в Модуле1
With ThisWorkbook.VBProject.VBComponents(«Module1»).CodeModule
.DeleteLines 1, .CountOfLines
End With
End sub
*******************
Sub DeleteModule() ‘ удаляет сам Модуль1
Dim vbc As VBComponent
Set vbc = ThisWorkbook.VBProject.VBComponents(«Module1»)
ThisWorkbook.VBProject.VBComponents.Remove vbc
Set vbc = Nothing
End sub
*******************
Sub DeleteModule() ‘ удаляет весь макрос
Dim tmp As String
Dim vbc As VBComponent
Dim prj As VBIDE.VBE
Set prj = Excel.Application.VBE
For Each vbc In prj.VBProjects(«NAME»).VBComponents
If (vbc.Type = vbext_ct_MSForm Or vbc.Type = vbext_ct_StdModule Or vbc.Type = vbext_ct_ClassModule) And vbc.Name <> «Module2» Then
tmp = vbc.Name
prj.VBProjects(«NAME»).VBComponents.Remove vbc
tmp = «»
End If
Next vbc
Set prj = Nothing
End sub
*******************
НО!!!!!!!!!!!!!!!!!!!
Все эти коды выполняются ТОЛЬКО с установленной галочкой «Доверять доступ к Visual Basic Project» («Trust access to Visual Basic Project») в параметрах безопасности макросов.
ВНИМАНИЕ ВОПРОС!
Как программным методом (кодами в начале макроса) изменить параметры безопасности и установить соответствующую галочку?
Я НЕ ПИШУ ВИРУСЫ, дело в том, что я продаю свои мелкие программки на VBA и хочу защитить свои авторские права. Мне надо чтобы после определенной даты или после определенного кол-ва запуска программы она удаляла сама себя. Мне НЕ НАДО воздействовать на другие файлы и программы, надо только «лицензировать» свою.
Была еще такая идея:
После проверки даты или кол-ва запусков, в случае привышения макрос сохраняет свой же файл в формате Excel 3.0, который не может содержать макросов. Идея прекрасно воплощяется в жизнь, но только если сам макрос не защищен паролем! Может как-то развить это направление?
Слышал еще такое:
Что если проект имеет цифровую подпись MicroSoft то даже эта галочка не нужна, т.к. в таком случае Excel воспринемает эту прогу как «свою родную» и разрешает любые манипуляции с макросом самим макросом. Для этого надо всего-лишь подписаться цифровым сертификатом MS. Кто-нибудь знает как это сделать? Тем более что прога по присвоению сертификатов находится в стандартной комплектации Офиса.
Заранее спасибо за все советы!
Код к задаче: «Удаление макросом VBA себя самого или своего модуля»
textual
Cells(<font color="darkblue"><b>1</b></font>,<font color="darkblue"><b>1</b></font>)=<font color="darkblue"><b>123</b></font>
Полезно ли:
7 голосов , оценка 4.571 из 5
Содержание:
- Удалите все макросы, сохранив файл в формате XLSX
- Удалить определенные макросы из диалогового окна «Макрос»
- Удалите модуль с макросом
[lyte id=’lyNJbZfM7TU’ /]
Использование макросов VBA в Excel может значительно сэкономить время. Вы можете автоматизировать множество повторяющихся задач и создавать новые функции и возможности в Excel с помощью простых кодов макросов VBA.
Но в некоторых случаях вам может потребоваться удалить все макросы из книги Excel (или удалить только определенные макросы).
Это может быть в том случае, если вы получаете книгу от кого-то другого и хотите освободить ее от макросов, или когда вы отправляете кому-то файл с макросами, а квитанция не нуждается в них в книге.
В этом уроке я покажу вам несколько действительно простых способов удалить макросы из книги в Microsoft Excel.
Итак, приступим!
Удалите все макросы, сохранив файл в формате XLSX
Если вы хотите избавиться от всех макросов сразу, самый простой способ сделать это — сохранить существующую книгу в формате XLSX.
По умолчанию у вас не может быть кода макроса VBA в формате файла XLSX. Если вы это сделаете, он будет автоматически удален при сохранении файла Excel.
В Excel вы можете использовать макросы только в форматах .XLSM, .XLSB и более старых форматах .XLS. Когда вы сохраняете книгу в любом другом формате, макросы сразу теряются.
Предположим, у вас есть файл с именем Example.xlsm (с макросами), ниже приведены шаги по удалению всех макросов из этого файла:
- Перейдите на вкладку Файл.
- Нажмите на опцию «Сохранить как» (в новых версиях Excel это «Сохранить копию»).
- Щелкните Обзор. Откроется диалоговое окно «Сохранить как».
- В диалоговом окне «Сохранить как» введите имя файла, с которым вы хотите его сохранить. Вы также можете сохранить существующее имя, если хотите
- Щелкните раскрывающийся список Тип файла.
- Выберите вариант «Книга Excel (* .xlsx)».
- Нажмите на Сохранить
- В появившемся запросе нажмите Да. Он просто информирует вас о том, что код VB будет утерян, если вы сохраните этот файл в формате .XLSX.
Вот и все! Теперь ваш файл не содержит макросов.
Этот метод удобен тем, что удаляет все макросы из текущей книги Excel за один раз. Однако, если вы хотите удалить некоторые макросы и удалить некоторые, этот метод не сработает для вас (см. Тот, который использует диалоговое окно «Макрос» для этого).
Еще одна хорошая особенность этого метода заключается в том, что у вас все еще есть копия исходного файла со всеми макросами (на случай, если она вам понадобится в будущем).
Удалить определенные макросы из диалогового окна «Макрос»
Хотя предыдущий метод удалял все макросы. это позволяет вам выбрать те, которые вы хотите удалить.
И если вы хотите удалить все макросы, вы также можете это сделать.
Предположим, у вас есть файл с именем Example.xlsm, в котором есть несколько макросов.
Ниже приведены шаги по удалению макроса из этой книги:
- Перейдите на вкладку Разработчик (если вы не видите вкладку Разработчик, обратите внимание на примечание желтого цвета после шагов)
- Щелкните по кнопке Macros. Откроется диалоговое окно «Макрос», в котором вы увидите все макросы в книге.
- Убедитесь, что в раскрывающемся списке «Макросы в» выбрана «Эта книга».
- Выберите имя макроса, который вы хотите удалить, из списка макросов.
- Щелкните по кнопке Удалить. Это удалит выбранный макрос
Если вы хотите удалить несколько (или все) макросов, повторите шаги 4 и 5.
Примечание. Если вы не видите вкладку разработчика, нажмите здесь, чтобы узнать, как отобразить вкладку разработчика на ленте в Excel. Кроме того, вы также можете использовать сочетание клавиш — ALT + 8, чтобы открыть диалоговое окно «Макрос».
Кроме того, вы также можете щелкнуть вкладку «Представления», щелкнуть раскрывающийся список «Макросы» и затем выбрать опцию «Просмотр макросов». Это также откроет диалоговое окно Macros.
Хотя этот метод отлично работает, он позволяет удалять только макросы, которые хранятся в модуле редактора Visual Basic. Если у вас есть макросы событий (в определенных листах или ThisWorkbook) или макросы в личной книге макросов, их нельзя удалить с помощью этого метода.
Удалите модуль с макросом
Другой способ удалить макросы — перейти в редактор Visual Basic и удалить оттуда макросы.
Этот метод дает вам наибольший контроль, поскольку вы можете получить доступ ко всем макросам (будь то в модуле, объектах или личной книге макросов).
Ниже приведены шаги по удалению макроса из редактора Visual Basic:
- Щелкните вкладку Разработчик на ленте.
- Нажмите на опцию Visual Basic (или воспользуйтесь сочетанием клавиш — ALT + F11)
- В редакторе VB у вас будут все объекты книги в Project Explorer. Если вы не видите Project Explorer, выберите опцию View в меню, а затем нажмите Project Explorer.
- В Project Explorer дважды щелкните объект с кодом макроса. Это может быть модуль, объект рабочего листа или ThisWorkbook.
- В открывшемся окне кода удалите макросы, которые хотите удалить. Если вы хотите удалить все, просто выберите все и нажмите клавишу удаления.
Если у вас есть модуль, который имеет код, который вы хотите удалить, вы можете щелкнуть правой кнопкой мыши объект модуля, а затем выбрать опцию «Удалить модуль».
Итак, это три способа удаления макросов из книги Microsoft Excel.
Надеюсь, вы нашли этот урок полезным!
Удаления модуля в макросах. |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
In this article we will create a macro to delete module from the workbook.
We will be using the MainModule as raw module.
We want to get rid of this MainModule.
Click on this button for the same.
Logic explanation
In this article, we have created two macros, DeleteVBComponent and calling_procedure.
DeleteVBComponent
It takes the workbook name and module name as inputs, and deletes the module from the workbook.
calling_procedure
It is used to call the DeleteVBComponent macro with the active workbook and MainModule as inputs.
Code explanation
Application.DisplayAlerts = False
This code is used to disable the alert message.
wb.VBProject.VBComponents.Remove wb.VBProject.VBComponents(CompName)
This code is used to remove the module from the workbook.
Application.DisplayAlerts = True
This code is used to enable the alert message.
Please follow below for the code
Option Explicit Sub DeleteVBComponent(ByVal wb As Workbook, ByVal CompName As String) 'Disabling the alert message Application.DisplayAlerts = False 'Ignore errors On Error Resume Next 'Delete the component wb.VBProject.VBComponents.Remove wb.VBProject.VBComponents(CompName) On Error GoTo 0 'Enabling the alert message Application.DisplayAlerts = True End Sub Sub calling_procedure() 'Calling DeleteVBComponent macro DeleteVBComponent ActiveWorkbook, "MainModule" End Sub
If you liked this blog, share it with your friends on Facebook. Also, you can follow us on Twitter and Facebook.
We would love to hear from you, do let us know how we can improve our work and make it better for you. Write to us at info@exceltip.com
It’s complicated. See this link to learn more about why.
In short this is what you need to do:
First you need to reference VBIDE
VBIDE The VBIDE is the object library that defines all the objects and
values that make up VBProject and the Visual Basic Editor. You must
reference this library to use the VBA Extensibility objects. To add
this reference, open the VBA editor, open your VBProject in the
editor, and go to the Tools menu. There, choose References . In the
References dialog, scroll down to Microsoft Visual Basic for
Applications Extensibility 5.3 and check that item in the list. You
can add the reference programmatically with code like:
ThisWorkbook.VBProject.References.AddFromGuid _
GUID:="{0002E157-0000-0000-C000-000000000046}", _
Major:=5, Minor:=3
Next, you need to grant ‘Trust access to the Visual Basic Project’
Next, you need to enable programmatic access to the VBA Project. In
Excel 2003 and earlier, go the Tools menu (in Excel, not in the VBA
editor), choose Macros and then the Security item. In that dialog,
click on the Trusted Publishers tab and check the Trust access to the
Visual Basic Project setting.In Excel 2007, click the Developer item on the main Ribbon and then
click the Macro Security item in the Code panel. In that dialog,
choose Macro Settings and check the Trust access to the VBA project
object model.
Now you can add the code to delete the module:
Deleting A Module From A Project
This code will delete Module1 from the VBProject. Note that you cannot
remove any of the Sheet modules or the ThisWorkbook module. In
general, you cannot delete a module whose Type is vbext_ct_Document.
Sub DeleteModule()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Set VBProj = ActiveWorkbook.VBProject
Set VBComp = VBProj.VBComponents("Module1")
VBProj.VBComponents.Remove VBComp
End Sub