Вот программный код, жирным выделен код при выполнении которого виснет Excel. Иногда этот код выполняется, закономерность не выявлена. Помогите кто может. Может я что не так делаю. Заранее огромное спасибо
Sub Макрос1()
Dim wbTemplate As Workbook
Dim wbOpen As Workbook
Dim shTemlate As Worksheet
Dim shOpen As Worksheet
Dim i As Integer, j
Dim VBCodeMod As VBIDE.CodeModule
Dim VBCodeTemplate As VBIDE.CodeModule
Dim VBComp As VBIDE.VBComponent
Dim strSecretName As String
Set wbTemplate = Workbooks("Модель расчета пени.xltm")
Set wbOpen = Workbooks("Авангард ООО СХП Кантемировский район.xlsm")
'Если проект заблокирован то надо вручную разблокировать его
If wbTemplate.VBProject.Protection = vbext_pp_locked Then Stop
If wbOpen.VBProject.Protection = vbext_pp_locked Then Stop
For Each VBComp In wbOpen.VBProject.VBComponents
If VBComp.Type = vbext_ct_StdModule Then
wbOpen.VBProject.VBComponents.Remove VBComp
End If
Next
With wbOpen.VBProject.VBComponents
.Import "D:\ModuleVariables.bas"
End With
Set VBCodeTemplate = wbTemplate.VBProject.VBComponents(wbTemplate.Sheets("Template").CodeName).CodeModule
For i = 1 To wbOpen.Sheets.Count
strSecretName = Choose(i, "Лист1", "Лист2", "Лист3", "Лист4", "Лист8")
Set shOpen = wbOpen.Sheets(i)
If shOpen.CodeName = strSecretName Then
Set VBCodeMod = wbTemplate.VBProject.VBComponents(strSecretName).CodeModule
With wbOpen.VBProject.VBComponents(strSecretName).CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString VBCodeMod.Lines(1, VBCodeMod.CountOfLines)
End With
Else
With wbOpen.VBProject.VBComponents(shOpen.CodeName).CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString VBCodeTemplate.Lines(1, VBCodeTemplate.CountOfLines)
End With
End If
Next i
Set VBCodeMod = Nothing
Set VBCodeTemplate = Nothing
Set VBCodeMod = wbTemplate.VBProject.VBComponents("ЭтаКнига").CodeModule
With wbOpen.VBProject.VBComponents("ЭтаКнига").CodeModule
.DeleteLines 1, .CountOfLines
.AddFromString VBCodeMod.Lines(1, VBCodeMod.CountOfLines)
End With
End Sub