Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/MS Word: "УБРАТЬ_ЛИШНИЕ_ПРОБЕЛЫ" - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Word » MS Word: "УБРАТЬ_ЛИШНИЕ_ПРОБЕЛЫ" (макрос)
MS Word: "УБРАТЬ_ЛИШНИЕ_ПРОБЕЛЫ"
Alex_ST Дата: Суббота, 06.04.2013, 22:30 | Сообщение № 21
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3208
Репутация: 609 ±
Замечаний: 0% ±

2003
Ещё дополнил сабж топика - добавил очистку пробелов перед и после переносов строк.
[vba]
Код
Sub УБРАТЬ_ЛИШНИЕ_ПРОБЕЛЫ()
      '---------------------------------------------------------------------------------------
      ' Procedure    : УБРАТЬ_ЛИШНИЕ_ПРОБЕЛЫ
      ' Author       : KuklP & Alex_ST
      ' Purpose      : убрать в выделенном тексте многократные пробелы и пробелы перед некоторыми знаками пунктуации
      ' Notes        :
      ' URL          : http://www.excelworld.ru/forum/4-1127-45487-16-1365273046
      '---------------------------------------------------------------------------------------
      If Selection.Type <> wdSelectionNormal Then Exit Sub
      With Selection.Find
          .ClearFormatting   ' очистить условия поиска по формату (они могли сохраниться от предыдущих ручных поисков/замен)
          .Execute "[ ^s^t]{1;}([.,:;…\!\?\)])", , , -1, , , , 0, 0, "\1", 2    ' убрать обычные и неразрывные пробелы и табуляции перед знаками препинания .,:;…!?)
          .Execute "^w", , , 0, , , , 0, 0, " ", 2          ' заменить множественные пробелы на один
          .Execute "^p^w", , , 0, , , , 0, 0, "^p", 2      ' убрать пробелы в начале абзаца (после ^p)
          .Execute "^w^p", , , 0, , , , 0, 0, "^p", 2     ' убрать пробелы в конце абзаца (перед ^p)
          .Execute "^l^w", , , 0, , , , 0, 0, "^l", 2      ' убрать пробелы в начале новой строки (после ^l)
          .Execute "^w^l", , , 0, , , , 0, 0, "^l", 2     ' убрать пробелы в конце новой строки (перед ^l)
      End With
End Sub
[/vba]



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Суббота, 06.04.2013, 22:31
 
Ответить
СообщениеЕщё дополнил сабж топика - добавил очистку пробелов перед и после переносов строк.
[vba]
Код
Sub УБРАТЬ_ЛИШНИЕ_ПРОБЕЛЫ()
      '---------------------------------------------------------------------------------------
      ' Procedure    : УБРАТЬ_ЛИШНИЕ_ПРОБЕЛЫ
      ' Author       : KuklP & Alex_ST
      ' Purpose      : убрать в выделенном тексте многократные пробелы и пробелы перед некоторыми знаками пунктуации
      ' Notes        :
      ' URL          : http://www.excelworld.ru/forum/4-1127-45487-16-1365273046
      '---------------------------------------------------------------------------------------
      If Selection.Type <> wdSelectionNormal Then Exit Sub
      With Selection.Find
          .ClearFormatting   ' очистить условия поиска по формату (они могли сохраниться от предыдущих ручных поисков/замен)
          .Execute "[ ^s^t]{1;}([.,:;…\!\?\)])", , , -1, , , , 0, 0, "\1", 2    ' убрать обычные и неразрывные пробелы и табуляции перед знаками препинания .,:;…!?)
          .Execute "^w", , , 0, , , , 0, 0, " ", 2          ' заменить множественные пробелы на один
          .Execute "^p^w", , , 0, , , , 0, 0, "^p", 2      ' убрать пробелы в начале абзаца (после ^p)
          .Execute "^w^p", , , 0, , , , 0, 0, "^p", 2     ' убрать пробелы в конце абзаца (перед ^p)
          .Execute "^l^w", , , 0, , , , 0, 0, "^l", 2      ' убрать пробелы в начале новой строки (после ^l)
          .Execute "^w^l", , , 0, , , , 0, 0, "^l", 2     ' убрать пробелы в конце новой строки (перед ^l)
      End With
End Sub
[/vba]

Автор - Alex_ST
Дата добавления - 06.04.2013 в 22:30
Alex_ST Дата: Пятница, 26.05.2023, 13:30 | Сообщение № 22
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3208
Репутация: 609 ±
Замечаний: 0% ±

2003
Переносил свои скрипты на новый комп и вспомнил про одну давно замеченную, но так и не исправленную недоработку: рассмотренные скрипты нормально чистят от лишних пробелов обычный текст, а вот у текста в ячейках таблиц оставляют пробелы перед символами конца ячейки ¤ ("клоп").
При чём среди спец-символов в диалоге поиска-замены Ворд его не показывает и потому найти его регулярным выражением проблематично.
Пошарил в сети, нашёл в топике на ссылка удалена решение уважаемого Казанского, но только для пробелов перед "клопом" в таблице.
Объединять в одну процедуру то, что здесь было разработано, и скрипт Казанского было лень... Решил тупо сделать "комбайн".[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]



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Serge_007 - Пятница, 26.05.2023, 14:15
 
Ответить
СообщениеПереносил свои скрипты на новый комп и вспомнил про одну давно замеченную, но так и не исправленную недоработку: рассмотренные скрипты нормально чистят от лишних пробелов обычный текст, а вот у текста в ячейках таблиц оставляют пробелы перед символами конца ячейки ¤ ("клоп").
При чём среди спец-символов в диалоге поиска-замены Ворд его не показывает и потому найти его регулярным выражением проблематично.
Пошарил в сети, нашёл в топике на ссылка удалена решение уважаемого Казанского, но только для пробелов перед "клопом" в таблице.
Объединять в одну процедуру то, что здесь было разработано, и скрипт Казанского было лень... Решил тупо сделать "комбайн".[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]

Автор - Alex_ST
Дата добавления - 26.05.2023 в 13:30
Serge_007 Дата: Пятница, 26.05.2023, 14:17 | Сообщение № 23
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Alex_ST, почему здесь?

[p.s.] Не надо на кибер ссылки давать, они у нас под запретом...[/p.s.]


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеAlex_ST, почему здесь?

[p.s.] Не надо на кибер ссылки давать, они у нас под запретом...[/p.s.]

Автор - Serge_007
Дата добавления - 26.05.2023 в 14:17
Alex_ST Дата: Пятница, 26.05.2023, 18:52 | Сообщение № 24
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3208
Репутация: 609 ±
Замечаний: 0% ±

2003
Серёга, за Кибер извини, забыл...
А здесь потому, что это продолжение топика и макрос именно для Ворда. В Excel'e всё намного проще.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеСерёга, за Кибер извини, забыл...
А здесь потому, что это продолжение топика и макрос именно для Ворда. В Excel'e всё намного проще.

Автор - Alex_ST
Дата добавления - 26.05.2023 в 18:52
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Word » MS Word: "УБРАТЬ_ЛИШНИЕ_ПРОБЕЛЫ" (макрос)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!