Это старая версия документа.
Структурирование информации позволяет "разложить все по полочкам" в голове человека, быстрей и проще понять предоставляемую информацию. Такой же подход требуют себе задачи, решаемые через программные продукты, например, 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 Sep типом связи Dim ColumnTypeLink As Integer ColumnTypeLink = 4 типа связи в Word TypeLinkWordColorRGB = RGB(127, 127, 127) жду Субъектом и типом всязи Dim Separator As String Separator = " / " Dim TypeLinkWordColorRGB As String Dim TableTypeLink As связи в Word TypeLinkWordColorRGB = RGB(127, 127, 127) Dim TypeLinkHTMLColorRGB an HTMLCreate = Application.Act связи в Word TypeLinkHTMLColorRGB = RGB(0, 0, 0) РОЦЕДУРНАЯ бные Dim CellLinkText As String Dim TableTypeLink As Table нте Set TableTypeLink = Application.ActiveDocument.B (отдельный файл или HTML) Dim HTMLCreate As Boolean HTMLCreate = Application.ActiveDocument.Variables("BSHtml").Value On Error Resuse ext 'игнор error 59АЯ ЧАСТЬ 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 WordColorRGB 'wdColorRed 'зжной ячейке Selection.EndKey lic = wdToggle 'курсив Eделенной ячейки If HTMLCreate Then kText 'дописываем вится HTML Selection.Font.Color = TypeLinkHTMLColorRGB оту в таблице цвет Selection.Font.Underline = wdUnderlineNone mns(ColumnTypeLink).Select Coluние гиперссылки Else ем ширину столбца с Комменя файл Word Selection.Font.Color = TypeLinkWordColorRGB Width = Selection.Columns.Prefeый цвет Selection.Font.Italic = wdToggle TypeLinkив End If Selection.TypeText Text:=Separator & CellLinkText .PreferredWidthType = вид связи End If Next i Width = 100 If HTMLCreate Then 'если создам красоту в таблице вого столбца TableTypeLink.Columnлбца с Типом связи TableTypeLink.Columns(ColumnTypeLink).Select ColumnTypeLinkWidth = Selection.Columns.PreferredWidth TypeLink.Columns(ColumnTypeLink).Preferredбца с Комментарием TableTypeLink.Columns(ColumnTypeLink + 1).Select ColumnCommentWidth = Selection.Columns.PreferredWidth 'Проверка на корректность названия приванием типа связи TableTypeLink.Columns(ColumnTypeLink).Delete аем, что нужной закладки нет For Eaа 100% страницы TableTypeLink.PreferredWidthType = wdPreferredWidthPercent TableTypeLink.PreferredWidth = 100 If HTMLCreate Then BookmarkIs = Trтся HTML адка есть End If Nexпервого столбца 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