Про вывод данных в MS Word
Используется технология OLE:
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.
|