AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.07.2008, 20:21   #1  
vadimiron is offline
vadimiron
Участник
 
24 / 10 (1) +
Регистрация: 16.12.2007
COM Word и font.bold(true)
Есть шаблон. В нём таблица. Создание и заполнение строк этой таблицы работает без проблем.
В одну из ячеек нужно записать запись типа: Country: Russia.
То есть часть текста должна быть bold, а другая часть нет.
Как такого добиться???
PHP код:
range app.selection();
font range.font();
font.bold(true); 
Делает всю ячейку bold.
Если после вставки части текста пытаться
PHP код:
font.bold(false); 
сделать - не помогает

Можно по идеи в другом темплейте сделать две букмарки - одна жирная, другая нет, и потом данный документ вставлять в ячейку. Но изза одной строчки целый темплейт инициализировать и вставлять как то нехочется...

Как такая проблема решается????????????
Заранее спасибо

Какие есть варианты??
Старый 31.07.2008, 01:19   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Вот запись макроса из 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
Портируйте ее в Аксапту.
Старый 31.07.2008, 13:49   #3  
vadimiron is offline
vadimiron
Участник
 
24 / 10 (1) +
Регистрация: 16.12.2007
Thumbs up
Сенкс - получилось

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);
}
Старый 31.07.2008, 14:23   #4  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Чтобы посимвольно не перебирать (а то мало ли какие длинные подстроки для болдирования предстоят в будущем), можно еще как-то вот так:
Код:
 
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
Старый 31.07.2008, 15:04   #5  
vadimiron is offline
vadimiron
Участник
 
24 / 10 (1) +
Регистрация: 16.12.2007
И сново получилось ))

X++:
cell = table.cell(rowCount, 1);
range = cell.range();
range.bold(false);
rangePart = doc.range(range.start(), range.start() + strlen(Name));
rangePart.bold(true);
Старый 31.07.2008, 23:40   #6  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
А вот еще хорошее решение, когда не нужно вычислять длину слова и можно комфортно заболдить "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
Про длинный список параметров Execute можно почитать в справке Word, я же для наглядности перечислю здесь хотя бы их названия:
Код:
 
FindText          = "Country:" 
MatchCase         = True
MatchWholeWord    = True
MatchWildcards    = False 
MatchSoundsLike   = False 
MatchAllWordForms = False  
Forward           = True
Wrap              = 0 (константа wdFindStop)
Format            = True
ReplaceWith       = "Country:"
Replace           = 1 (константа wdReplaceOne)
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Gustav: Unsorted, или Записки DAX-дилетанта - II Gustav DAX Blogs 39 20.05.2009 15:34
Kurt Hatlevik: Sneak preview of the WMS E&E Blog bot DAX Blogs 0 20.11.2008 01:10
msdynamicsax: VB script that test the com connector for Dynamics Ax 4.0 Blog bot DAX Blogs 0 25.08.2008 18:05
Получить текст из word через Com Кирилл DAX: Программирование 4 18.10.2006 11:01

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:07.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.