Страницы: 1
RSS
Програмное копирование модуля открытой надстройки в новую книгу
 
Здравствуйте.
Нашел способ скопировать стандартный модуль из книги в новую книгу. Код взял с сайта 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
 
Цитата
Sla_0412 написал:
Меня смущает строка
ну тогда хотя бы поиском по этому слову поищите. Потому что кроме Вас она никого больше не смущает в том виде, к котором записана. Здесь важно знать, что ThisWorkbook - обращение к книге, в которой код. И тогда становится очень важно знать где код расположен и откуда его надо копировать.
Если этот код в надстройке и модуль для копирования в этой же надстройке - то все правильно(код, кстати, на это и рассчитан).
Изменено: The_Prist - 06.05.2017 13:20:00
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо вам огромное за ликвидацию моей безграмотности! Разобрался.
Страницы: 1
Наверх