Ваша задача оказалась довольно сложной в части программирования.
Могу лишь дать вам некоторые небольшие рекомендации.
1. Реализация обхода ячеек текущей таблицы по столбцам:
Sub CellsInColumn()
'Обход всех ячеек таблицы по столбцам
Dim rngTable As Range
Dim oTable As Table
Dim oColumn As Column
Dim oCell As Cell
Dim sStr As String
Set rngTable = Selection.Range
Set oTable = Selection.Tables(1)
If Not rngTable.Information(wdWithInTable) Then
MsgBox prompt:="Курсор находится вне таблицы"
Else
With oTable
For Each oColumn In .Columns
For Each oCell In oColumn.Cells
'Сюда можно вставить текст обработки ячеек
Next oCell
Next oColumn
End With
End If
End Sub
2. Если в вашей таблице есть пустые поля, то вам придется их исключить из процесса сортировки.
3. Сортировку я бы проводил методом пузырька, который является хотя и не очень эффективным по времени, но даст вам экономию используемой оперативной памяти (что существенно, так как вы будете обрабатывать большую таблицу). Кроме того, применение этого метода позволит прерывать и возобновлять процесс сортировки в любой момент.
А как это все реализовать в Ворде - думайте сами.
Также хотелось бы отметить, что Word не очень приспособлен для таких видов сложной сортировки в таблицах - это текстовый редактор. Подобную сортировку гораздо проще будет реализовать, например, в Экселе.
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.