Это старая версия документа.
В отчете от процесса в таблице со списком статусов процесса необходимо добавить столбец, который будет иметь дату бОльшую на год от даты "Дата изменения статуса" в одноименном столбце. Название этого столбца "Срок деятельности". Формат даты представлен как "дд.мм.гг".
Решение описывается с момента, когда в шаблоне отчета создана необходимая привязка типа Список.
В шаблоне к необходимой таблице вручную добавляется столбец с заголовком "Срок деятельности". Кодом VBA анализируется дата в каждой ячейки столбца "Дата изменения статуса" и в соседнюю ячейку вставляется дата с увеличенной датой на год.
Дополнительный столбец добавляется в конец таблицы стандартными средствами Word.
Кодом VBA реализуется:
При работе с датой следует помнить, что она определена как текстовый тип данных.
Определяем название привязки типа "Список", которая представляет нужную таблицу. (см. Вставка привязки в шаблон отчета)
Sub ПослеВыполненияОтчета(ob As Variant, app As Variant) 'название з часть па Список, формирующей нужную таблицу StatusBookmarksName = "Изменесок, формирующей нужную таблицу StatusBookmarksName = "Изменения_процесса_e1ded8b0" columnDate = 4 ки Dim StatusOk As Boolean 'храним дажащий исходную дату = False 'сначала считаем, что нужной закладкь названия привязки Dim StatusOk As Boolean Закладка 'если искомая зазакладка есть в отчете StatusOk = False veDocument.Bookmarks жной закладки нет Dim Bkm As Bookmark ue 'отмечаем, что закладкапа Закладка ерез закладку Set tableStatus = Applicaеди закладок в документе For Each Bkm In ActiveDocument.Bookmarks If Bkm.Name = StatusBookmarksName Then StatusOk = True бходимая закладка кладка есть s.Rows.Count 'количество строк таблицы цей через закладку Set tableStatus = Application.ActiveDocument.Bookmarks(StatusBookmarksName).Range.Tables(1) End If Next ячейки я часть If StatusOk Then ина текста имая закладка countTableStatus = tableStatus.Rows.Count Edit, (dateEditLen - 2)) 'рок таблицы For i = 2 To countTableStatus yearValidText = Right$(dateам таблицы кроме первой dateEdit = tableStatus.Cell(i, columnDate).Range.Text год даты из ячейки dateEditLen = Len(dateEdit) чное) екста If dateEditLen > 1 Then xt = "0" + CStrпусто dateEdit = Left$(dateEdit, (dateEditLen - 2)) Else yearValidText ячейка, получаем чистый текст yearValidText = Right$(dateEdit, 2) ddmmValid = Lе цифры года yearValidDigit = CInt(yearValidText) + 1 них символов (год) лое число + 1 год If yearValidDigit < 10 Then tableStatus.Cell(i, columnDat двузначное) yearValidText = "0" + CStr(yearValidDigit) t i End If 0 + чи