Страницы: 1
RSS
Перенос макроса в новую книгу программно
 
Добрый день!

Я сохраняю лист книги в новый файл следующим кодом:
Код
Sub SaveSheet()
Application.ScreenUpdating = False
Dim FileN$
FileN = ThisWorkbook.Path & "\" & "Порученние" & Date & ".xlsx"
ThisWorkbook.Sheets(1).Copy
ActiveWorkbook.SaveCopyAs FileN
ActiveWorkbook.Close SaveChanges:=False
MsgBox "Поручение сохранено" & Chr(13) & FileN
ThisWorkbook.Close SaveChanges:=False
Application.ScreenUpdating = True
End Sub
мне необходимо добавить перенос модуля вместе с процедурами в новую книгу, вместе с листом, так как на листе могут быть пользовательские формулы, которые не будут работать в новой книге.

Подскажите как быть плз.
 
Осуществить экспорт всех стандартных модулей из текущей книги, во вновь созданную рабочую книгу, можно так : (VBProject не должен быть защищён) ИСТОЧНИК
Код
Private Sub ExportAllStdModules() 
    With Application 
         .ScreenUpdating = False 
         iTempPath$ = .DefaultFilePath & .PathSeparator 
         With .Workbooks.Add(xlWBATWorksheet).VBProject.VBComponents 
              For Each iVBComponent In ThisWorkbook.VBProject.VBComponents 
                  If iVBComponent.Type = 1 Then 
                     iModuleName$ = iTempPath$ & iVBComponent.Name 
                     iVBComponent.Export FileName:=iModuleName$ 
                     .Import FileName:=iModuleName$ 
                     Kill PathName:=iModuleName$ 
                  End If 
              Next 
         End With 
         .ScreenUpdating = True 
    End With 
End Sub
Изменено: Sanja - 14.02.2019 17:00:51
Согласие есть продукт при полном непротивлении сторон
 
Sanja, а возможно ли переместить один конкретный модуль, я знаю точное имя модуля и оно не меняется.
 
Как добавить код процедуры программно, скопировать модуль
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Не очень стабильный метод:
Код
Sub aaa()
Dim VBP As Object, dt$, a&
Set VBP = ActiveWorkbook.VBProject.VBComponents.Item(3).CodeModule 'выбираем нужный итем проекта
dt = VBP.Lines(1, VBP.CountofLines) 'добываем оттуда весь код
'какие-то действия по открытию книги, либо созданиию новой книги и пр.
Set VBP = ThisWorkbook.VBProject.VBComponents 'открываем проект книги-получателя
VBP.Add (1) 'добавляем программный модуль
VBP.Item(VBP.Count).CodeModule.InsertLines 1, dt 'и добавляем весь код вытащенный ранее
End Sub
 
Большое спасибо за помощь, понял все что хотел!
Страницы: 1
Наверх