Еще один пример работы с Word из 1С 7.7, увидел тут .
Word = CreateObject("Word.Application");
Word.Documents.Add();
Word.Documents(1).Content.InsertAfter(“Уважаемый “ + СокрЛП(Директор)+"!");
MyRange = Word.Documents(1).paragraphs.last.range;
MyRange.Bold = 1;
Word.Documents(1).paragraphs.last.Alignment = 1; //center
Word.Documents(1).Content.InsertParagraphAfter();
Word.Documents(1).Content.InsertAfter("Вы нам должны "+Сумма);
Word.Documents(1).Content.InsertAfter(" "+СокрЛП(Валюта));
Word.Documents(1).paragraphs.last.range.Bold = 0;
Word.Documents(1).paragraphs.last.Alignment = 0; //left
Цифирь = Word.Documents(1).range
(Word.ActiveDocument.paragraphs.last.range.End – 1 -СтрДлина(Строка(СокрЛП(Сумма)))-1-СтрДлина(Строка(СокрЛП(Валюта))),
Word.ActiveDocument.paragraphs.last.range.End – 1 -СтрДлина(Строка(СокрЛП(Валюта))));
Цифирь.Font.ColorIndex = 6; //wdRed
// показываем полученный текст
Word.Visible = 1;
Есть несколько тонкостей, на которые следует обратить внимание:
• вызывается объект “Word.Application”;
• нельзя передавать константы Word в качестве параметров функций –
только их численные значения. А чтобы быстро узнать их значения,
достаточно создать макрос в Word, а в нем воспользоваться процедурой
MsgBox(). Например, если передать ей wdRed в качестве параметра, то
получим 6 – значение константы;
• вместо True и False надо использовать 1 и 0;
• “Documents(1)” указывает на первый из открытых документов. Надежнее
использовать “ActiveDocument” (ведь если Word уже был запущен, то ваш
документ может оказаться не первым) – пример просто показывает, что
работают оба варианта;
• обратите внимание, что объектом “Range” может быть как весь объект
другого вида (слово, абзац, документ), так и конкретная область (ср.
“MyRange” и “Цифирь”).
Основным источником информации на эту тему является файл справки по
VBA для MS Word.