Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2012, 17:52   #1
w00t
Пользователь
 
Регистрация: 15.03.2012
Сообщений: 29
По умолчанию Сортировка блоков по алфавиту

Здравствуйте. Приложил файл. Требуется отсортировать по алфавиту слева направо и сверху вниз. Т.е. первые слова блоков идут по порядку слева направо и вниз дальше. Как это возможно осуществить?
Вложения
Тип файла: zip Наклейки.zip (63.9 Кб, 21 просмотров)
w00t вне форума Ответить с цитированием
Старый 18.10.2012, 06:17   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Так пойдёт?
  1. Удалил лишние пробелы (" {2;}" заменить на "", подстановочные знаки включены)
  2. Удалил пустые абзацы ("^p^p" заменить на "", подстановочные знаки выключены)
  3. Удалил пустые абзацы в начале и в конце ячеек (макросом)
  4. Заменил абзацы на условные символы $$ ("^p" заменить на "$$", подстановочные знаки выключены)
  5. Преобразовал таблицу в текст, разделитель — абзац. Каждая ячейка стала одним абзацем
  6. Отсортировал абзацы по алфавиту
  7. Преобразовал текст в таблицу с двумя столбцами, разделитель — абзац, ширина — по ширине окна
  8. Заменил условные символы $$ на абзацы ("$$" заменить на "^p", подстановочные знаки выключены)
  9. Задал высоту строк 3,85 см как в исходном документе

Макросы:
Код:
'Удаление знака абзаца в начале ячейки
Sub DeleteLastParagraphInCell()
    Dim oCell As Cell
    For Each oCell In Selection.Tables(1).Range.Cells
        If oCell.Range.Characters.First.Text = ChrW(13) Then oCell.Range.Characters.First.Delete
    Next
End Sub

'Удаление знака абзаца в конце ячейки
Sub DeleteLastParagraphInCell()
    Dim oCell As Cell
    For Each oCell In Selection.Tables(1).Range.Cells
        If oCell.Range.Characters.Last.Previous.Text = ChrW(13) Then oCell.Range.Characters.Last.Previous.Delete
    Next
End Sub

'Преобразование всех таблиц в текст
Sub AllTablesToText()
    Dim oTbl As Table
    For Each oTbl In ActiveDocument.Tables
        oTbl.Rows.ConvertToText Separator:=wdSeparateByParagraphs, _
        NestedTables:=True
    Next
End Sub
Вложения
Тип файла: zip Наклейки (испр).zip (49.3 Кб, 25 просмотров)
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировка по алфавиту lozon Общие вопросы Delphi 5 17.12.2011 13:12
Сортировка по алфавиту NuR1k БД в Delphi 5 21.08.2010 19:14
Сортировка по алфавиту Cpluser Общие вопросы C/C++ 7 03.03.2010 10:11
сортировка по алфавиту на си++ Craz Помощь студентам 2 01.10.2009 23:33
Сортировка по алфавиту ЧИЖ Общие вопросы Delphi 1 16.03.2007 14:17