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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2009, 19:36   #11
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

Because появилось новое направление: не выделение текста, а делание с ним определенных действий
Busine2009 вне форума Ответить с цитированием
Старый 25.05.2009, 12:05   #12
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию Чисто, конкретно по тексту!

У меня получилось немного сложнее, чем у Sasha_Smirnov, но работает только с текстом, который находится вне таблиц. Можно делать с этим текстом все, что угодно. Думаю, логика макроса понятна.
Код:
Sub DoNotTouchTables()
  Dim oRng As Range, i&
  For i = 1 To ActiveDocument.Tables.Count
'      Чтобы точно установить интервал между абзацами, нужно сначала убрать автоматический интервал
    Select Case i
      Case 1
        'Текст до первой таблицы. Диапазон (Range) от нулевого символа в документе до первого символа в первой таблице
        Set oRng = ActiveDocument.Range(0, ActiveDocument.Tables(i).Range.Start)
        With oRng
          .Paragraphs.SpaceAfterAuto = False
          .Paragraphs.SpaceBeforeAuto = False
          .Paragraphs.SpaceAfter = 6
          .Paragraphs.SpaceBefore = 6
        End With
      Case .Tables.Count
        'Текст до и после последней таблицы. 
        Set oRng = ActiveDocument.Range(ActiveDocument.Tables(i - 1).Range.End, ActiveDocument.Tables(i).Range.Start)
        With oRng
          .Paragraphs.SpaceBeforeAuto = False
          .Paragraphs.SpaceAfterAuto = False
          .Paragraphs.SpaceBefore = 6
          .Paragraphs.SpaceAfter = 6
        End With
        'Диапазон (Range) от последнего символа последней таблицы до конца документа
        Set oRng = ActiveDocument.Range(ActiveDocument.Tables(i).Range.End, ActiveDocument.Range.End)
        With oRng
          .Paragraphs.SpaceBeforeAuto = False
          .Paragraphs.SpaceAfterAuto = False
          .Paragraphs.SpaceBefore = 6
          .Paragraphs.SpaceAfter = 6
        End With
      Case Else
        'Текст между таблицами в документе. Диапазон (Range) от последнего символа предыдущей таблицы до первого символа в текущей
        Set oRng = ActiveDocument.Range(ActiveDocument.Tables(i - 1).Range.End, ActiveDocument.Tables(i).Range.Start)
        With oRng
          .Paragraphs.SpaceBeforeAuto = False
          .Paragraphs.SpaceAfterAuto = False
          .Paragraphs.SpaceBefore = 6
          .Paragraphs.SpaceAfter = 6
        End With
    End Select
  Next
End Sub
Если есть вопросы, то милости прошу.
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 25.05.2009 в 15:52.
viter.alex вне форума Ответить с цитированием
Старый 26.05.2009, 07:30   #13
Busine2009
Новичок
Джуниор
 
Регистрация: 23.05.2009
Сообщений: 167
По умолчанию

Спасибо за помощь.

Посмотрю макрос сего дня, о результатах напишу.
Busine2009 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение текста в webbrowser'е НП... Компоненты Delphi 1 12.07.2011 17:22
D200X - выделение текста в IDE ikv_2006 Софт 8 06.05.2009 14:03
Поиск и выделение фрагмента в вордовском документе Bobby Общие вопросы Delphi 1 17.04.2009 17:07
Выделение текста в TWebBrowser IgorKr Общие вопросы C/C++ 0 27.01.2009 21:22
Выделение текста В мемо BESS Компоненты Delphi 15 30.07.2008 17:07