Страницы: 1
RSS
Импорт макроса в код листа
 
Привет Всем!
Подскажите пожалуйста!
Есть две открытых  книги(книга1.xlsm, книга2.xls) и файл експортированый из модуля листа. В книге1 кнопка, по нажатии на которую должен произойти импорт модуля, лист1.cls в модуль листа книга2. файл модуля находится на диске С:\.  

Пробовал так:
Во время выполнения макроса книга2 активная.

Код
Sub PastModule()
    'Здесь нужно указать, где находится файл с модулем.
    Const sFileName As String = "С:\Лист1.cls"
 
    'Добавление модуля в активную книгу.
    ActiveWorkbook.VBProject.VBComponents.Import Filename:=sFileName
End Sub

Ексель ругаеться на эту строку
Код
ActiveWorkbook.VBProject.VBComponents.Import Filename:=sFileName


Всех Благодарю за ответы!
Изменено: pashaman - 09.01.2018 15:26:22
 
pashaman, привет.
Цитата
Ексель ругаеться на эту строку
иногда ошибка может много сказать, скопируйте текст ошибки сюда.
 
Цитата
pashaman написал:
Ексель ругаеться на эту строку
логично. Нельзя переносить модули листов и книг через импорт. Лист1 - скорее всего уже есть в книге. И VBE ругается именно на это - не может быть двух модулей с одинаковым именем. И даже если бы импорт прошел удачно, Вас ждало бы разочарование - был бы импортирован не модуль листа, а модуль класса(по своему типу) и нового листа в книге не возникло бы. В случае с листами надо вообще элементарно копировать сам лист. Будет скопирован и лист и код в нем. И никаких выкрутасов с доступом к VBE.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Jungl написал:
иногда ошибка может много сказать, скопируйте текст ошибки сюда.
Run-time error '1004':
Programmatic access to Visual Basic Project is not trusted
 
На одном сайте нашел такой вариант
Код
Sub CreateEventProcedure_WorkSheetChange() 
   Dim objVBProj As Object, objVBComp As Object, objCodeMod As Object 
   Dim lLineNum As Long

   Set objVBProj = ActiveWorkbook.VBProjectn   
   Set objVBComp = objVBProj.VBComponents("Sheet1") 
   Set objCodeMod = objVBComp.CodeModule

   With objCodeMod 
       lLineNum = .CreateEventProc("Change", "Worksheet") 
       lLineNum = lLineNum + 1 
       .InsertLines lLineNum, "    MsgBox ""Hello World""" 
   End With 
End Sub

Ексель выдает ту же ошыбку и подсвечивает эту строку:
Set objVBProj = ActiveWorkbook.VBProjectn  
При наведении мыши на нее пишет
ActiveWorkbook.VBProject = <Metod 'VBProject' of object '_Workbook' faild>
 
Особо не вникал. По поводу ошыбки. Последняя n лишняя
Set objVBProj = ActiveWorkbook.VBProjectn
Согласие есть продукт при полном непротивлении сторон
 
Цитата
pashaman написал:
Programmatic access to Visual Basic Project is not trusted
Параметры - Центр управления безопасностью - Параметры центра... - Параметры макросов - Доверять доступ к объектной модели проектов VBA.
Но это не отменяет сказанного The_Prist.
 
Цитата
pashaman написал:
Run-time error '1004':
Programmatic access to Visual Basic Project is not trusted
А гуглить-то не пробовали ошибку? :) Она очень красноречива. В Вашем случае Казанский уже дал верный ответ - надо дать доступ к проекту VBA. Но могут быть и другие проблемы, советую ознакомиться: Что необходимо для внесения изменений в проект VBA(макросы) программно
Изменено: The_Prist - 09.01.2018 21:43:06
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Большое спасибо всем за ответы!!!!
Буду пробовать!
 
The_Prist, круть, спасибо за помощь ! с помощью этой статьи, сумел решить свою задачу
Страницы: 1
Наверх