Здравствуйте. Нашел способ скопировать стандартный модуль из книги в новую книгу. Код взял с сайта http://www.excel-vba.ru/ Возникла потребность скопировать код из моей надстройки "Моя_надстройка.xlam" во вновь созданную книгу программно.
Код
Sub Copy_Module()
Dim objVBProjFrom As Object, objVBProjTo As Object, objVBComp As Object
Dim sModuleName As String, sFullName As String
'расширение стандартного модуля
Const sExt As String = ".bas"
'имя модуля для копирования
sModuleName = "prefkpChan"
On Error Resume Next
'проект книги, из которой копируем модуль
Set objVBProjFrom = ThisWorkbook.VBProject
'необходимый компонент
Set objVBComp = objVBProjFrom.VBComponents(sModuleName)
'если указанного модуля не существует
If objVBComp Is Nothing Then
MsgBox "Модуль с именем '" & sModuleName & "' отсутствует в книге.", vbCritical, "Error"
Exit Sub
End If
'проект книги для добавления модуля
Set objVBProjTo = ActiveWorkbook.VBProject
'полный путь для экспорта/импорта модуля. К папке должен быть доступ на запись/чтение
sFullName = "C:\" & sModuleName & sExt
objVBComp.Export Filename:=sFullName
objVBProjTo.VBComponents.Import Filename:=sFullName
'удаляем временный файл для импорта
Kill sFullName
End Sub
Как обратиться к надстройке правильно? Меня смущает строка
Код
'проект книги, из которой копируем модуль
Set objVBProjFrom = ThisWorkbook.VBProject
ну тогда хотя бы поиском по этому слову поищите. Потому что кроме Вас она никого больше не смущает в том виде, к котором записана. Здесь важно знать, что ThisWorkbook - обращение к книге, в которой код. И тогда становится очень важно знать где код расположен и откуда его надо копировать. Если этот код в надстройке и модуль для копирования в этой же надстройке - то все правильно(код, кстати, на это и рассчитан).