Это старая версия документа.
Структурирование информации позволяет "разложить все по полочкам" в голове человека, быстрей и проще понять предоставляемую информацию. Такой же подход требуют себе задачи, решаемые через программные продукты, например, Business Studio. В то же время, при разработке отчетов это означает, что каждой выделенной структуре, например, в таблице, требуется отдельный столбец. В некоторых случаях это бывает неудобно по причине нехватки места на листе. И если совместить данные некоторых столбцов в одном определенным способом, то читабельность документа от этого не уменьшиться.
В отчете формата Word по процессу в таблице со столбцами процессов, субъектов процесса и типа связи субъекта с процессом сделать так, чтобы тип связи показывался не отдельным столбцом, а в столбце с субъектом. При этом:
Название субъекта и название типа связи должно быть разделено символом "/".
Решение описывается с момента, когда в шаблоне отчета создана необходимая привязка типа "Список", которую можно видеть таблицей.
После того, как отчет будет сформирован, будем запоминать текст в каждой ячейке столбца "Тип связи" и добавлять его к тексту соседней ячейки столбца "Субъект" в нужном оформлении. Столбец "Тип связи" после этого удаляется.
Кодом VBA:
После окончания переноса всех типов связей удалить столбец "Тип связи" и поправить таблицу к обычному виду.
Sub ПослеВыполненияОтчета(ob As Variant, app As Variant) акладки, НАЯ щей нужную таблицу Dim Bookmark As String Bookmующей нужную таблицу Dim Bookmark As String Bookmark = "Подпроцессы_и_исполнител_83cdcd34" столбца с типом связи Dim ColumnTypванием Субъекта Dim ColumnSubject As Integer ColumnSubject = 3 ъектом и типом связи Dim Sepa типом связи Dim ColumnTypeLink As Integer ColumnTypeLink = 4 типа связи в Word TypeLinkWordColorRGB = RGB(127, 127, 127) Dжду Субъектом и типом связи Dim Separator As String Separator = " / " Dim TypeLinkWordColorRGB As String Dim TableTypeLink As связи в Word TypeLinkWordColorRGB = RGB(127, 127, 127) Dim TypeLinkHTMLColorRGB n HTMLCreate = Application.Acti связи в Word TypeLinkHTMLColorRGB = RGB(0, 0, 0) ОЦЕДУРНАЯ Чбные Dim CellLinkText As String Dim TableTypeLink As Table те Set TableTypeLink = Application.ActiveDocument.Bo (отдельный файл или HTML) Dim HTMLCreate As Boolean HTMLCreate = Application.ActiveDocument.Variables("BSHtml").Value On Error Resumse xt 'игнор error 599АЯ ЧАСТЬ If BookmarkIs(Bookmark) Then единение CellLinkText =ь в документе Set TableTypeLink = Application.ActiveDocument.Bookmarks(Bookmark).Range.Tables(1) countRow = TableTypeLink.Rows.Count i, ColumnSubject).Select 'рок таблицы For i = 2 To countRow On Error Resume Next енной ячейки If HTMLCreate Then 'если создается HTML вертикальное объединение CellLinkText = CellTextClean(TableTypeLink.Cell(i, ColumnTypeLink).Range.Text) If Len(CellLinkText) Then Else зи указан TableTypeLink.Cell(i, ColumnSubject).Select ordColorRGB 'wdColorRed 'зажной ячейке Selection.EndKey ic = wdToggle 'курсив Enделенной ячейки If HTMLCreate Then Text 'дописываем видтся HTML Selection.Font.Color = TypeLinkHTMLColorRGB ту в таблице цвет Selection.Font.Underline = wdUnderlineNone ns(ColumnTypeLink).Select Columние гиперссылки Else м ширину столбца с Комментя файл Word Selection.Font.Color = TypeLinkWordColorRGB idth = Selection.Columns.Preferый цвет Selection.Font.Italic = wdToggle ypeLink.ив End If Selection.TypeText Text:=Separator & CellLinkText PreferredWidthType = wвид связи End If Next i idth = 100 If HTMLCreate Then 'если создаем красоту в таблице ого столбца TableTypeLink.Columnsлбца с Типом связи TableTypeLink.Columns(ColumnTypeLink).Select ColumnTypeLinkWidth = Selection.Columns.PreferredWidth ypeLink.Columns(ColumnTypeLink).PreferredWбца с Комментарием TableTypeLink.Columns(ColumnTypeLink + 1).Select ColumnCommentWidth = Selection.Columns.PreferredWidth 'Проверка на корректность названия привванием типа связи TableTypeLink.Columns(ColumnTypeLink).Delete ем, что нужной закладки нет For Eacа 100% страницы TableTypeLink.PreferredWidthType = wdPreferredWidthPercent TableTypeLink.PreferredWidth = 100 If HTMLCreate Then BookmarkIs = Truтся HTML дка есть End If Nextпервого столбца TableTypeLink.Columns(1).PreferredWidth = _ TableTypeLink.Columns(1).PreferredWidth / 4 Else текста ячейки от 2х последних служебца Комментария TableTypeLink.Columns(ColumnTypeLink).PreferredWidth = _ ColumnTypeLinkWidth + ColumnCommentWidth + 5 End If End If End Sub Function BookmarkIs(BookmarkName As String) As Boolean стый текст) CellTextClean = Left$(CellTeь названия привязки Dim Bkm As Bookmark его не удаляем, а возвращапа Закладка BookmarkIs = False lText End If End Function