Привет Всем! Подскажите пожалуйста! Есть две открытых книги(книга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
логично. Нельзя переносить модули листов и книг через импорт. Лист1 - скорее всего уже есть в книге. И VBE ругается именно на это - не может быть двух модулей с одинаковым именем. И даже если бы импорт прошел удачно, Вас ждало бы разочарование - был бы импортирован не модуль листа, а модуль класса(по своему типу) и нового листа в книге не возникло бы. В случае с листами надо вообще элементарно копировать сам лист. Будет скопирован и лист и код в нем. И никаких выкрутасов с доступом к VBE.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
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>
pashaman написал: Programmatic access to Visual Basic Project is not trusted
Параметры - Центр управления безопасностью - Параметры центра... - Параметры макросов - Доверять доступ к объектной модели проектов VBA. Но это не отменяет сказанного The_Prist.