Сортировка в документах Microsoft Word с помощью макросов

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

Прежде чем начать

Прим.: Этот раздел применим только к шаблонам, созданным в документах Microsoft Word.

Об этой задаче

Преимущества использования макросов для сортировки:

Процедура

  1. Добавьте метку макроса в столбцы для сортировки:
    1. Откройте шаблон в приложении Document Studio.
    2. Добавьте элемент Комментарий Значок Комментарий в ячейку заголовка сортируемого столбца.
    3. Щелкните дважды на элементе Комментарий и введите <RPE_SORT>.
    4. Повторите эти действия для всех таблиц в шаблоне для его обновления.
  2. Создайте макрос:
    1. Откройте Microsoft Word.
    2. Скопируйте следующий сценарий и вставьте его в файл:
      ' Макрос: сортировка таблиц
      ' Макрос предоставлен как есть без какой-либо поддержки со стороны 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
    3. Сохраните файл с расширением .dot.
  3. Добавьте макрос в спецификацию документа и сформируйте выходные данные:
    1. Откройте спецификацию документа (если она уже существует) или создайте новую в приложении Панель запуска.
    2. Разверните Вывод, щелкните правой кнопкой мыши на пункте Целевой документ: Word и выберите Настроить вывод.
    3. Для пункта Таблица стилей нажмите кнопку Обзор и найдите созданный макрос .dot.
    4. Для пункта Макрос введите имя макроса.
    5. Создайте выходной документ.

Дальнейшие действия

Сохраните макрос и используйте его повторно в любой спецификации документа для сортировки данных.

Комментарии