Переносил свои скрипты на новый комп и вспомнил про одну давно замеченную, но так и не исправленную недоработку: рассмотренные скрипты нормально чистят от лишних пробелов обычный текст, а вот у текста в ячейках таблиц оставляют пробелы перед символами конца ячейки ¤ ("клоп"). При чём среди спец-символов в диалоге поиска-замены Ворд его не показывает и потому найти его регулярным выражением проблематично. Пошарил в сети, нашёл в топике на ссылка удалена решение уважаемого Казанского, но только для пробелов перед "клопом" в таблице. Объединять в одну процедуру то, что здесь было разработано, и скрипт Казанского было лень... Решил тупо сделать "комбайн".[vba]
Код
Sub СЖАТЬ_ПРОБЕЛЫ() On Error Resume Next With Selection.Find .ClearFormatting ' очистить условия поиска по формату (они могли сохраниться от предыдущих поисков/замен) .Replacement.ClearFormatting ' очистить форматы замещающего текста (они могли сохраниться от предыдущих поисков/замен) .Execute "^w", , , 0, , , , , 0, " ", 2 ' заменить множественные пробелы на один .Execute "^p^w", , , 0, , , , , 0, "^p", 2 ' убрать пробелы в начале абзаца (после ^p) .Execute "^w^p", , , 0, , , , , 0, "^p", 2 ' убрать пробелы в конце абзаца (перед ^p) End With Call Trim_TABLE End Sub Private Sub Trim_TABLE() ' Удалить пробелы в конце ячеек таблицы Dim oCell As Cell, S$, D$ Application.ScreenUpdating = False For Each oCell In Selection.Tables(1).Range.Cells S = oCell.Range.Text D = Trim$(Left$(S, Len(S) - 2)) If Len(S) <> Len(D) Then oCell.Range.Text = D Next Application.ScreenUpdating = True End Sub
[/vba]
Переносил свои скрипты на новый комп и вспомнил про одну давно замеченную, но так и не исправленную недоработку: рассмотренные скрипты нормально чистят от лишних пробелов обычный текст, а вот у текста в ячейках таблиц оставляют пробелы перед символами конца ячейки ¤ ("клоп"). При чём среди спец-символов в диалоге поиска-замены Ворд его не показывает и потому найти его регулярным выражением проблематично. Пошарил в сети, нашёл в топике на ссылка удалена решение уважаемого Казанского, но только для пробелов перед "клопом" в таблице. Объединять в одну процедуру то, что здесь было разработано, и скрипт Казанского было лень... Решил тупо сделать "комбайн".[vba]
Код
Sub СЖАТЬ_ПРОБЕЛЫ() On Error Resume Next With Selection.Find .ClearFormatting ' очистить условия поиска по формату (они могли сохраниться от предыдущих поисков/замен) .Replacement.ClearFormatting ' очистить форматы замещающего текста (они могли сохраниться от предыдущих поисков/замен) .Execute "^w", , , 0, , , , , 0, " ", 2 ' заменить множественные пробелы на один .Execute "^p^w", , , 0, , , , , 0, "^p", 2 ' убрать пробелы в начале абзаца (после ^p) .Execute "^w^p", , , 0, , , , , 0, "^p", 2 ' убрать пробелы в конце абзаца (перед ^p) End With Call Trim_TABLE End Sub Private Sub Trim_TABLE() ' Удалить пробелы в конце ячеек таблицы Dim oCell As Cell, S$, D$ Application.ScreenUpdating = False For Each oCell In Selection.Tables(1).Range.Cells S = oCell.Range.Text D = Trim$(Left$(S, Len(S) - 2)) If Len(S) <> Len(D) Then oCell.Range.Text = D Next Application.ScreenUpdating = True End Sub