Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
ru:creating_user_reports:use_macros_in_reports:examples:rtf_in_table [2020/07/21 02:58] 192.168.1.126 удалено |
— (текущий) | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Форматирование привязки типа RTF в таблице ====== | ||
- | |||
- | ===== Текущая ситуация ===== | ||
- | |||
- | В свойствах объектов существуют параметры, которые позволяют фиксировать не просто текст, а форматированный текст. Так называемый формат RTF. Несмотря на то, что для таких параметров можно задать формат шрифта по умолчанию, бывают ситуации, когда информация в них заносится из других документов путем копирования данных через буфер обмена. При этом остается форматирование текста как у источника. При выводе таких параметров в отчет при сохранении форматирования RTF может происходить выделение данного текста на фоне общего представления отчета. Например, текст будет выведен другим шрифтом и другим размером. | ||
- | |||
- | ===== Постановка задачи ===== | ||
- | |||
- | В отчете формата Word по процессу в таблице с описанием подпроцесса необходимо столбец "Комментарий" сделать таким же шрифтом, таким же размером как другие столбцы таблицы и таким же стилем абзаца. При этом оставить другое форматирование: подчеркивание, выделение, цвет и т.д. | ||
- | |||
- | ===== Исходные данные ===== | ||
- | |||
- | Решение описывается с момента, когда уже существует привязка типа "Список", выводящая список подпроцессов. | ||
- | |||
- | [{{ ru:creating_user_reports:use_macros_in_reports:rtf_in_table:lang_rtf1.png?nolink |Рисунок 1. Привязка, выводящая список подпроцессов, в котором существует привязка с типом RTF - "Комментарий"}}] | ||
- | |||
- | [{{ ru:creating_user_reports:use_macros_in_reports:rtf_in_table:lang_rtf2.png?nolink |Рисунок 2. Вид выполненного отчета - стиль текста "Комментарий" отличен он других столбцов таблицы}}] | ||
- | |||
- | ===== Концепция решения ===== | ||
- | |||
- | Необходимо обратиться к нужной таблице. Определить параметры шрифта в соседнем столбце от столбца "Комментарий" (значения из ячейки). Далее выделить столбец "Комментарий" и задать необходимые параметры шрифта. | ||
- | |||
- | ===== Шаги решения ===== | ||
- | |||
- | Определяем название привязки типа "Список", которая представляет нужную таблицу (см. [[ru/manual/manual]] -> [[ru/manual/report/insert_anchor?&#пример_определения_названия_привязки_типа_список|Пример определения названия привязки типа "Список"]]). | ||
- | |||
- | <code> | ||
- | 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 | ||
- | </code> | ||
- | |||
- | ===== Результат ===== | ||
- | |||
- | [{{ ru:creating_user_reports:use_macros_in_reports:rtf_in_table:lang_rtf3.png?nolink |Рисунок 3. Вид сформированного отчета. Параметр типа RTF имеет такой же шрифт и размер, как и остальная таблица}}] | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | [<contextnavigator>] | ||
- | |||