Это старая версия документа.
При графическом описании бизнес-процесса допускается туннелирование стрелок. Откуда именно пришли такие стрелки или куда уходят, явно не указывается. В отчетах такие состояния стрелок вместо конкретных процессов обозначают текстом "{Туннель}".
{Туннель} – поставщик или потребитель стрелки. Название не детализируется в случаях однозначного понимания читателями диаграммы.
В отчете формата Word по процессу необходимо во всех таблицах, где встречается текст "{Туннель}", сделать его замену на "—". Допускается, что за границами таблиц так же может встречаться этот текст, но его изменять не следует.
Решение описывается с момента, когда существует шаблон отчета по процессу. В шаблоне существуют таблицы (различные привязки), которые содержат информацию по входам и выходам стрелок.
Так как проводить замену текста следует только в таблицах (причем в таблицах разных привязок), то необходимо определиться с признаками таблиц, в которых будет производиться изменение. Таким признаком было выбрано число столбцов в таблицах.
Чтобы сократить время работы макроса, так же определимся сразу с номером столбца, в котором необходимо производить изменения в случае необходимости.
Проходя по всем таблицам документа, будет происходить сравнение количества столбцов выбранной таблицы. Если таблица подходит, то будет проход по каждой ячейке нужной таблицы в поисках текста для замены и, в случае необходимости, будет происходить замена текста.
Количество столбцов нужных нам таблиц – 5. Изменения возможны в 5м столбце таких таблиц.
Sub ПослеВыполненияОтчета(ob As Variant, app As Variant) olumnTableProc часть columnTableProc = 5 сама columnChange = 5 'столбец, в котицах с процессама columnChange = 5 {Туннель}" 'искомый текст для замены newText = "-о производить изменения tunnelText = "{Туннель}" Count 'кол-во таблиц в док для замены newText = "---" bleCount 'проходим поамены умента 'поая часть tableCount = ActiveDocument.Tables.Count :=wdGoToTable, Which:=wdGoToFirst, Counенте For iTable = 1 To tableCount lumnTableProc Then 'если в таблице полицам документа bles(1).Rows.Count 'кол-во строк в таблия к каждой таблице Selection.GoTo What:=wdGoToTable, Which:=wdGoToFirst, Count:=iTable, Name:="" If Selection.Tables(1).Columns.Count = columnTableProc Then CellText = Selectionо процессам countRow = Selection.Tables(1).Rows.Count CellText = Left$(Cellв таблице For i = 2 To countRow текст If Len(CellText) <> 0 Thenблицы кроме заголовка On Error Resume Next амены 'тогда задаем новое значение для ячейки вертикальное объединение CellText = Selection.Tables(1).Cell(i, columnChange).Range.Text Next i End If жного столбц