Если свойство, которое требуется использовать, недоступно в окне сортировки, для сортировки можно применить макрос.
Прежде чем начать
Прим.: Этот раздел применим только к шаблонам, созданным в документах Microsoft Word.
Об этой задаче
Преимущества использования макросов для сортировки:
- Макрос можно выполнить для любой таблицы в шаблоне.
- Если в какой-либо таблице содержится комментарий <RPE_SORT>, то эта таблица сортируется.
- Таблицы без комментария <RPE_SORT> не отсортированы.
- Комментарий <RPE_SORT> можно удалить из конечного вывода.
Процедура
- Добавьте метку макроса в столбцы для сортировки:
- Откройте шаблон в приложении Document Studio.
- Добавьте элемент Комментарий
в ячейку заголовка сортируемого столбца.
- Щелкните дважды на элементе Комментарий и введите <RPE_SORT>.
- Повторите эти действия для всех таблиц в шаблоне для его обновления.
- Создайте макрос:
- Откройте Microsoft Word.
- Скопируйте следующий сценарий и вставьте его в файл:
' Макрос: сортировка таблиц
' Макрос предоставлен как есть без какой-либо поддержки со стороны IBM.
Sub sortTables()
Dim tbl As Table
' сортировать каждую таблицу
For Each tbl In ActiveDocument.Tables
' определение наличия заголовка у таблицы
Dim hasheader As Boolean
hasheader = False
If tbl.Rows.First.HeadingFormat = True Then
hasheader = True
End If
' получить столбец для сортировки. Столбец определяется комментарием "<RPE_SORT>" в первой ячейке
Dim hcell As Cell
Dim index As Integer
pos = 0
For Each hcell In tbl.Rows.First.Cells
hcell.Select
If Selection.Comments.Count > 0 Then
If Selection.Comments.Item(1).Range.Text = "<RPE_SORT>" Then
pos = hcell.ColumnIndex
' Для удаления комментария удалите признак комментария со следующей строки
' Selection.Comments.Item(1).Delete
Exit For
End If
End If
Next
' сортировка таблицы по найденному столбцу
If pos > 0 Then
Dim fldnum As String
fldnum = "Column " + CStr(pos)
Debug.Print "Sorting on: "; fldnum
tbl.Select
Selection.Sort ExcludeHeader:=hasheader, FieldNumber:=fldnum, SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending
End If
Next
End Sub
- Сохраните файл с расширением .dot.
- Добавьте макрос в спецификацию документа и сформируйте выходные данные:
- Откройте спецификацию документа (если она уже существует) или создайте новую в приложении Панель запуска.
- Разверните Вывод, щелкните правой кнопкой мыши на пункте Целевой документ:
Word и выберите Настроить вывод.
- Для пункта Таблица стилей нажмите кнопку Обзор и найдите созданный макрос .dot.
- Для пункта Макрос введите имя макроса.
- Создайте выходной документ.
Дальнейшие действия
Сохраните макрос и используйте его повторно в любой спецификации документа для сортировки данных.