Тема: Добаление процедуры

Добрый день.
Помогите разобраться.
В бланк отчета добаляю:

'Sub Implement()
'On Error GoTo 9999
'Set Module = ActiveWorkbook.VBProject.VBComponents("ЭтаКнига")
'If Module.CodeModule.ProcOfLine(1, Module.CodeModule.CountOfLines) <> "Workbook_BeforePrint" Then
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "Public FlagShape As Boolean"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "Private Sub Workbook_BeforePrint(Cancel As Boolean)"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "Dim Shape"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "If Not FlagShape Then"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "   If ActiveSheet.ProtectContents = True Then"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "      FlagContents = True"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "      On Error Resume Next"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "      ActiveSheet.Unprotect 123"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "      On Error Resume Next"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "      ActiveSheet.Unprotect 314"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "   End If"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "   For Each Shape In ActiveSheet.Shapes"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "      Shape.LockAspectRatio = False"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "      If InStr(1, Shape.Name, ""Sketch"") > 0 Then"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "         If Shape.Width > 283 Then"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "            Shape.Width = Shape.Width * 0.954"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "         End If"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "      End If"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "    Next"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "    FlagShape = True"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "    ActiveSheet.Protect 314"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "End If"
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, "End Sub"
'End If
'9999  Set Module = Nothing
'End Sub

При формировании отчета отдельного бланка все нормально.
Процедура создается.
Запускаю печать комплекта, где имеется данный бланк, зависает.
Что я делаю не так?

Re: Добаление процедуры

Может лучше вместо Implement на бланке (это старые возможности репортера), создать функцию в модуле набора данных и поместить ее вызов в область Выполнить бланка.
https://help.technologics.ru/5.7/TCSHel … e=_484.htm

(изменено: Олег, 20 июля 2010 15:58:30)

Re: Добаление процедуры

"Выполнить" запускается до заполнения бланка... А здесь эскиз должен уже быть
И каким образом можно будеть втавить процедуру в файл эксел?

Re: Добаление процедуры

Implement запускается тоже до заполнения бланка, просто бланк начинает заполняться не дожидаясь отработки процедуры Implement. Т.е. поджигается Implement и забывается о нем. Видимо, при наличии только одного бланка, эскизы успевают сформироваться вовремя (случайно  :)  ). В комплекте же, когда дело доходит до формирования эскизов, Implement уже отработал.
На сколько я понимаю, таким способом решается вопрос масштабирования эскизов. Может лучше прибегнуть к стандартным средствам? https://help.technologics.ru/5.7/TCSHelp/_480.htm

Re: Добаление процедуры

Эскиз в отчете отображается нормально, на при печати квадрат становтся прямоугольником окружность элипс.
Но мне важно само создание процедуры путем InsertLines в комплектах. При формировании одиночного шаблона работает

Re: Добаление процедуры

Может формирование комплекта зависает на каком-то другом бланке, а до этого дело и не доходит? Попробуйте сформировать отчет с помощью Start вместо Report, может станет понятно где застревается.

Re: Добаление процедуры

Докучаева Елена пишет:

Может формирование комплекта зависает на каком-то другом бланке, а до этого дело и не доходит? Попробуйте сформировать отчет с помощью Start вместо Report, может станет понятно где застревается.

Пробовал, не выполняется команда
'Module.CodeModule.InsertLines Module.CodeModule.CountOfLines + 1, ""