Это старая версия документа.


Замена в таблицах текста "{Туннель}"

Текущая ситуация

При графическом описании бизнес-процесса допускается туннелирование стрелок. Откуда именно пришли такие стрелки или куда уходят, явно не указывается. В отчетах такие состояния стрелок вместо конкретных процессов обозначают текстом  "{Туннель}".

{Туннель} – поставщик или потребитель стрелки. Название не детализируется в случаях однозначного понимания читателями диаграммы.

Постановка задачи

В отчете формата Word по процессу необходимо во всех таблицах, где встречается текст "{Туннель}", сделать его замену на "—". Допускается, что за границами таблиц так же может встречаться этот текст, но его изменять не следует.

Исходные данные

Решение описывается с момента, когда существует шаблон отчета по процессу. В шаблоне существуют таблицы (различные привязки), которые содержат информацию по входам и выходам стрелок.

Рисунок 1. Вид шаблона отчета с таблицами, которые могут выводить заданный текст
Рисунок 2. Вид выполненного отчета с искомым текстом в некоторых ячейках

Концепция решения

Так как проводить замену текста следует только в таблицах (причем в таблицах разных привязок), то необходимо определиться с признаками таблиц, в которых будет производиться изменение. Таким признаком было выбрано число столбцов в таблицах.

Чтобы сократить время работы макроса, так же определимся сразу с номером столбца, в котором необходимо производить изменения в случае необходимости.

Проходя по всем таблицам документа, будет происходить сравнение количества столбцов выбранной таблицы. Если таблица подходит, то будет проход по каждой ячейке нужной таблицы в поисках текста для замены и, в случае необходимости, будет происходить замена текста.

Шаги решения

Количество столбцов нужных нам таблиц – 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
 
 жного столбц

Результат

Рисунок 3. Вид сформированного отчета после работы макроса

 

Актуальные новости, публикации и практики для бизнес-архитекторов и аналитиков
Driven by DokuWiki