| 
			
			 | 
		#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)  | 
| 
	
 |