Command disabled: recent


Форматирование привязки типа RTF в таблице

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

В свойствах объектов существуют параметры, которые позволяют фиксировать не просто текст, а форматированный текст. Так называемый формат RTF. Несмотря на то, что для таких параметров можно задать формат шрифта по умолчанию, бывают ситуации, когда информация в них заносится из других документов путем копирования данных через буфер обмена. При этом остается форматирование текста как у источника. При выводе таких параметров в отчет при сохранении форматирования RTF может происходить выделение данного текста на фоне общего представления отчета. Например, текст будет выведен другим шрифтом и другим размером.

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

В отчете формата Word по процессу в таблице с описанием подпроцесса необходимо столбец "Описание" сделать таким же шрифтом, таким же размером как другие столбцы таблицы и таким же стилем абзаца. При этом оставить  другое форматирование: подчеркивание, выделение, цвет и т.д.

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

Решение описывается с момента, когда уже существует привязка типа "Список", выводящая список подпроцессов.

Рисунок 1. Привязка, выводящая список подпроцессов, в котором существует привязка с типом RTF - "Описание"
Рисунок 2. Вид выполненного отчета - стиль текста "Описание" отличен он других столбцов таблицы

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

Необходимо обратиться к нужной таблице. Определить параметры шрифта в соседнем столбце от столбца "Описание" (значения из ячейки). Далее выделить столбец "Описание" и задать необходимые параметры шрифта.

Шаги решения

Определяем название привязки типа "Список", которая представляет нужную таблицу (см. Руководство пользователяПример определения названия привязки типа "Список").

Sub ПослеВыполненияОтчета(ob As Variant, app As Variant)

'Вводная часть

    'название закладки для привязи типа Список, формирующей нужную таблицу
    PodProcBookmarksName = "Подпроцессы_41fc2dd5"
    columnRTF = 2 'столбец в таблице, содержащий параметр RTF - "Описание"

        'Проверка на корректность названия привязки
        Dim PodProcBkmOk As Boolean 'сначала считаем, что нужной закладки нет

        Dim Bkm As Bookmark 'переменная типа Закладка

        'если искомая закладка есть среди закладок в документе
        For Each Bkm In ActiveDocument.Bookmarks

            If Bkm.Name = PodProcBookmarksName Then

                PodProcBkmOk = True 'отмечаем, что закладка есть
                'будем работать с таблицей через закладку
                Set tablePodProc = Application.ActiveDocument.Bookmarks(PodProcBookmarksName).Range.Tables(1)

            End If

        Next

'Процедурная  часть

    If PodProcBkmOk Then 'если есть необходимая закладка

        'Запоминаем параметры шрифта первой ячейки после заголовка справа от поля RTF
        Dim Rng As Range 'здесь будет область ячейки справа от столбца RTF
        Set Rng = tablePodProc.Cell(2, columnRTF + 1).Range

        FontName = Rng.Font.Name 'запоминаем шрифт
        FontSize = Rng.Font.Size 'запоминаем размер

        'Выделяем столбец с RTF кроме заголовка
        Dim RngRTF As Range
        'начало и конец диапазона
        RngRTFStart = tablePodProc.Cell(2, columnRTF).Range.Start
        RngRTFEnd = tablePodProc.Cell(tablePodProc.Rows.Count, columnRTF).Range.End

        'выделяем ячейки RTF
        ActiveDocument.Range(RngRTFStart, RngRTFEnd).Select

        'Задаем шрифт текста и размер
        With Selection.Font
            .Name = FontName
            .Size = FontSize
        End With

        'Форматирование абзаца
        Selection.ParagraphFormat = Rng.ParagraphFormat

    End If

End Sub

Результат

Рисунок 3. Вид сформированного отчета. Параметр типа RTF имеет такой же шрифт и размер, как и остальная таблица
« ПредыдущаяНа уровень вышеСледующая »
 
Driven by DokuWiki