1 / 1 / 0
Регистрация: 14.04.2011
Сообщений: 30
1

Форматировать строку внутри одного параграфа таблицы Word

28.08.2013, 21:37. Показов 2296. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть таблица на листе. В ней, в определенную ячейку необходимо записать форматированный текст.
Следующая строка просто записывает не форматированный текст в одну строчку.
Visual Basic
1
ActiveDocument.Tables(1).Cell(1, 1).Range.Text = "Мама мыла раму Мама мыла раму"
А нужно чтобы было например:
Мама мыла раму & CHR(13) &
Мама мыла раму

& CHR(13) & - т.е. следующая строка той же ячейки
(строка с разным шрифтом, цветом и оформлением)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.08.2013, 21:37
Ответы с готовыми решениями:

Выравнивание параграфа не выравнивая картинки внутри параграфа
Приветы Есть такая вот структура страницы.... их около 100 штук. И изменять их все руками тяжело...

VBA Word Определить номер параграфа в ячейке таблицы
Доброго времени суток. Работаю с ячейкой таблицы в word. Задача взять из нее, например первых три...

Word. Определение текущего параграфа
Всем, доброго времени суток! Недавно пришлось начать осваивать VBA, причем параллельно на Word и...

Определить, что курсор находится внутри таблицы Word
Скажите, как определить с помощью Delphi, что курсор находится внутри таблицы Word? Погуглил нашел...

6
617 / 242 / 16
Регистрация: 31.07.2013
Сообщений: 376
29.08.2013, 18:29 2
Цитата Сообщение от oper25 Посмотреть сообщение
необходимо записать форматированный текст.
А откуда берётся этот формат? Если генерируется программно, то, например, так:
Visual Basic
1
2
3
4
5
6
7
8
9
     With ActiveDocument.Tables(1).Cell(1, 1).Range
        .Text = "Мама мыла раму" & vbCr & "Мама мыла раму"
        .Words(1).Bold = True
        .Characters(2).Underline = True
        .Characters(2).Font.Size = 40
        .Words(2).Font.Italic = True
        .Words(2).Font.Color = wdColorRed
        .Words(3).Underline = True
    End With
Или так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
    Set myStyle = ActiveDocument.Styles.Add("myStyle", wdStyleTypeCharacter)
 
    With myStyle.Font
        .Italic = True
        .Color = wdColorRed
    End With
    
    With ActiveDocument.Tables(1).Cell(1, 1).Range
        .Text = "Мама мыла раму" & vbCr & "Мама мыла раму"
        .Words(2).Style = "myStyle"
    End With
1
1 / 1 / 0
Регистрация: 14.04.2011
Сообщений: 30
29.08.2013, 23:45  [ТС] 3
Спасибо, это точно пригодится.
А можно ли вот по такому принципу?:
составляем строку в коде, а потом помещаем результата в ячейку таблицы и форматирование не по номеру слова, а например, я схематично = формат такой то ... "Мама мыла" + формат такой то "раму". Помещаем собранный результат в ячейку.
0
617 / 242 / 16
Регистрация: 31.07.2013
Сообщений: 376
30.08.2013, 12:14 4
Лучший ответ Сообщение было отмечено oper25 как решение

Решение

Процесс безусловно можно до какой-то степени автоматизировать – всё зависит от предполагаемого разнообразия форматов.

Можно вставлять текст фрагментами, устанавливая для каждого свой формат:
Test
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub Test()
    
    ActiveDocument.Tables(1).Cell(1, 1).Range.Select
    
    Selection.Font.Bold = True
    Selection.TypeText Text:="М"
    
    Selection.Font.Underline = wdUnderlineSingle
    Selection.Font.Size = 40
    Selection.TypeText Text:="а"
    
    Selection.Font.Underline = wdUnderlineNone
    Selection.Font.Size = 14
    Selection.TypeText Text:="ма "
    
    Selection.Font.Bold = False
    Selection.Font.Italic = True
    Selection.Font.Color = wdColorRed
    Selection.TypeText Text:="мыла "
    
    Selection.Font.Italic = False
    Selection.Font.Color = wdColorAutomatic
    Selection.Font.Underline = wdUnderlineSingle
    Selection.TypeText Text:="раму"
    
End Sub


Можно создать отдельную процедуру, устанавливающую формат:
SetSelectionFormat
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub SetSelectionFormat(Optional setBold = False, _
                       Optional setItalic = False, _
                       Optional setUnderline = wdUnderlineNone, _
                       Optional setSize = 14, _
                       Optional setColor = wdColorAutomatic)
 
    With Selection.Font
        .Bold = setBold
        .Italic = setItalic
        .Underline = setUnderline
        .Size = setSize
        .Color = setColor
    End With
 
End Sub


Процедура может вызываться с полным списком аргументов или использовать значения по умолчанию:
TestNew
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub TestNew()
    
    ActiveDocument.Tables(1).Cell(1, 1).Range.Select
    
    SetSelectionFormat setBold:=True
    Selection.TypeText Text:="М"
    
    SetSelectionFormat True, , wdUnderlineSingle, 40
    Selection.TypeText Text:="а"
    
    SetSelectionFormat True
    Selection.TypeText Text:="ма "
    
    SetSelectionFormat setItalic:=True, setColor:=wdColorRed
    Selection.TypeText Text:="мыла "
    
    SetSelectionFormat setUnderline:=wdUnderlineSingle
    Selection.TypeText Text:="раму"
    
End Sub

Дальше можно каким-либо образом запаковать фрагменты строки и параметры форматирования в массив и выводить строку пофрагментно в цикле.
1
1 / 1 / 0
Регистрация: 14.04.2011
Сообщений: 30
30.08.2013, 18:56  [ТС] 5
Большое человеческое спасибо за оперативную, грамотную и богатую на варианты помощь!!!
Мне идеально подошел вариант под именем "Test"
Вариант "TestNew" мне по структуре примерно понятен, но почему то не заработал, ошибка в строке 5 "Sub or Function not defined"
0
617 / 242 / 16
Регистрация: 31.07.2013
Сообщений: 376
30.08.2013, 18:59 6
Цитата Сообщение от oper25 Посмотреть сообщение
ошибка в строке 5 "Sub or Function not defined"
К нему в комплекте идёт процедура SetSelectionFormat, приведённая выше.
1
1 / 1 / 0
Регистрация: 14.04.2011
Сообщений: 30
30.08.2013, 22:42  [ТС] 7
ох, вот теперь понятно
0
30.08.2013, 22:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.08.2013, 22:42
Помогаю со студенческими работами здесь

Как программно определить Item параграфа Word?
vVarParagraphs.OleProcedure("Add"); создаю параграф, подскажите пожалуйста как программно...

Есть ли способ получить или вычислить высоту параграфа в Word?
Есть ли способ получить или вычислить высоту параграфа (например, в points)? Знаю размер шрифта,...

Форматировать ЧАСТЬ текста внутри примечания
Программно создаю примечания к ячейкам рабочего листа Excel. Получается установить размер шрифта и...

при нажатии на строку таблицы нажимается ссылка внутри
Здравствуйте. Кто-нибудь сможет мне помочь с такой проблеммой? Нужно чтобы при клике на строке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru