Word2003. Как задать свойства абзаца в ячейке таблицы?

Программирование на Visual Basic for Applications
igor_m
Постоялец
Постоялец
 
Сообщения: 343
Зарегистрирован: 22.03.2002 (Пт) 12:40

Word2003. Как задать свойства абзаца в ячейке таблицы?

Сообщение igor_m » 15.08.2011 (Пн) 22:01

В Ворде на каждой странице есть таблица. В ячейке 2,2 этих таблиц есть текст. Помогите разобраться как задать свойства абзаца (параграфа) нескольких строк текста в этой ячейке. Структура текста такая:

Что русскому здорово
то немцу - смерть

Т.е. первая строчка (абзац) идет одним шрифтом, вторая строчка другим. Нужно последнее слово перенести на следующую строчку. Проблемы такие. Делаю
set myRange=Эта_ячейка
myRange.text=left(myRange.text,len(myRange.text)-6) & vbCrLf & right(myRange.text,6)

Худо-бедно это работает, но есть косяки.
1) Теперь весь текст становится жирным как первая строка (формат первого абзаца распространился на весь текст ячейки).
2) последнее слово сильно отделено от предыдущей строки, т.к. у абзаца по умолчению интервал 6 пт перед ним и за ним, и новый абзац, которым стало последнее слово, получился с такими свойствами. Если выделить текст со второй строки и задать интервал 0 пт, то все хорошо, но не знаю как это сделать программно: как выделить то что идет после первой строки и задать свойства этого параграфа (нулевой интервал и шрифт сделать нежирным).

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Re: Word2003. Как задать свойства абзаца в ячейке таблицы?

Сообщение viter.alex » 15.08.2011 (Пн) 22:20

Смотреть на свойства Range. Хоть в ячейке, хоть в надписи, а свойства у него одни и те же. В частности, объект Paragraphs, содержащий абзацы диапазона.
Итак.
Код: Выделить всё
Set myRange = Эта_ячейка
Dim sText As String
sText = Left(myRange.Text, Len(myRange.Text) - 2) 'Запомнить лучше в переменную, чтобы проще оперировать текстом. Отсекаем два последних символа: абзац и символ конца ячейки
myRange.Text = "" 'Очищаем
'Теперь задаём свойства [b]первого[/b] абзаца
With myRange.Paragraphs.First
  .Range.Font.Bold = True
  .Range.Font.Size = 16
  .Range.Text = Left(sText, Len(sText) - 6)
End With
'Добавляем ещё один абзац
myRange.InsertParagraphAfter
'Теперь задаём свойства [b]последнего[/b] абзаца
With myRange.Paragraphs.Last
  .Range.Font.Bold = False
  .Range.Font.Size = 12
  .Range.Text = Right(sText, 6)
End With

Код с коленки, проверен по-быстрому. Работает. Возможно, придётся подкорректировать числовые значения в функциях Left и Right
Нулевого интервала не бывает, бывает одинарный. Это свойство абзаца Space1
Лучше день потерять — потом за пять минут долететь!

igor_m
Постоялец
Постоялец
 
Сообщения: 343
Зарегистрирован: 22.03.2002 (Пт) 12:40

Re: Word2003. Как задать свойства абзаца в ячейке таблицы?

Сообщение igor_m » 16.08.2011 (Вт) 18:53

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


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Mail.ru [бот] и гости: 8

    TopList