|
|
#1 |
|
Участник
|
COM Word и font.bold(true)
Есть шаблон. В нём таблица. Создание и заполнение строк этой таблицы работает без проблем.
В одну из ячеек нужно записать запись типа: Country: Russia. То есть часть текста должна быть bold, а другая часть нет. Как такого добиться??? PHP код:
Если после вставки части текста пытаться PHP код:
Можно по идеи в другом темплейте сделать две букмарки - одна жирная, другая нет, и потом данный документ вставлять в ячейку. Но изза одной строчки целый темплейт инициализировать и вставлять как то нехочется... Как такая проблема решается???????????? Заранее спасибо Какие есть варианты?? |
|
|
|
|
#2 |
|
Участник
|
Вот запись макроса из Excel:
X++: With ActiveCell.Characters(Start:=1, Length:=8).Font
.Name = "Calibri"
.FontStyle = "??????????"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor
End With |
|
|
|
|
#3 |
|
Участник
|
Сенкс - получилось
X++: cell = table.cell(row, column); range = cell.range(); range.bold(false); chars = range.characters(); for(i = 1; i <= strlen(Name); i++) { char = chars.item(i); char.bold(true); } |
|
|
|
|
#4 |
|
Moderator
|
Чтобы посимвольно не перебирать (а то мало ли какие длинные подстроки для болдирования предстоят в будущем), можно еще как-то вот так:
Код:
Sub MSWord_VBA_Macro()
Dim doc As Document
Dim rngCell As Range
Dim rngWord As Range
Set doc = Application.ActiveDocument
Set rngCell = doc.Tables(1).Cell(2, 3).Range
Set rngWord = doc.Range(rngCell.Start, rngCell.Start + Len("Country:"))
rngWord.Bold = True
End SubКод: Sub MSWord_VBA_Macro_2()
Dim rng As Range
Set rng = ActiveDocument.Tables(1).Cell(2, 3).Range
rng.SetRange rng.Start, rng.Start + Len("Country:")
rng.Bold = True
End Sub |
|
|
|
|
#5 |
|
Участник
|
И сново получилось
))X++: cell = table.cell(rowCount, 1); range = cell.range(); range.bold(false); rangePart = doc.range(range.start(), range.start() + strlen(Name)); rangePart.bold(true); |
|
|
|
|
#6 |
|
Moderator
|
А вот еще хорошее решение, когда не нужно вычислять длину слова и можно комфортно заболдить "Country:" в произвольной фразе типа "Our SuperCountry: Russia":
Код: Sub MSWord_VBA_Macro_3() Dim rng As Range Set rng = ActiveDocument.Tables(1).Cell(2, 3).Range rng.Find.Replacement.Font.Bold = True rng.Find.Execute "Country:", True, True, False, False, False, True, wdFindStop, True, "Country:", wdReplaceOne End Sub Код: FindText = "Country:" MatchCase = True MatchWholeWord = True MatchWildcards = False MatchSoundsLike = False MatchAllWordForms = False Forward = True Wrap = 0 (константа wdFindStop) Format = True ReplaceWith = "Country:" Replace = 1 (константа wdReplaceOne) |
|
|