Андрей Попов - Windows Script Host для Windows 2000/XP
Рис. 8.2. Объектная модель Microsoft Excel
Напомним, что отдельные файлы в Excel называются рабочими книгами. Семейство Workbooks в Excel является аналогом семейства Documents в Word и содержит набор объектов Workbook (аналог объекта Document в Word), каждый из которых соответствует открытой в Word рабочей книге. Новая рабочая книга создается с помощью метода Add() объекта Workbooks.
Для доступа к ячейкам активного рабочего листа Excel используется свойство Cells объекта Application. Для получения или изменения значения отдельной ячейки применяется конструкция Cells(row, column).Value, где row и column являются соответственно номерами строки и столбца, на пересечении которых находится данная ячейка.
В Excel, как и в Word, имеется объект Selection, позволяющий работать с выделенным фрагментом электронной таблицы. Самым простым способом выделить диапазон ячеек активного рабочего листа является использование метода Select() объекта Range. Например, выражение Range("A1:C1").Select() позволяет выделить три смежные ячейки: "A1", "B1" и "C1".
Для того чтобы понять, какой именно объект Word или Excel нужно использовать для решения той или иной задачи, часто проще всего бывает проделать в соответствующем приложении необходимые манипуляции вручную, включив предварительно режим записи макроса. В результате мы получим текст макроса на языке VBA (Visual Basic for Applications), из которого будет ясно, какие методы и с какими параметрами нужно вызывать и какие значения нужно присваивать свойствам объектов. В качестве простой иллюстрации проделаем следующие действия. Запустим Word, запустим Macro Recorder (Сервис|Макрос|Начать запись (Tools|Macros|Record)), назовем новый макрос "Andrey" и нажмем на кнопку OK (рис. 8.3).
Рис. 8.3. Создание нового макроса в Macro Recorder
После этого напишем РІ документе слово "Андрей" Рё прекратим запись макроса. Теперь можно посмотреть содержимое записанного макроса. Для этого нужно выбрать РїСѓРЅРєС‚ Макросы (Macroses) РІ меню Сервис|Макрос (Tools|Macros), выделить макрос "Andrey" РІ СЃРїРёСЃРєРµ всех доступных макросов Рё нажать РєРЅРѕРїРєСѓ Рзменить (Edit). Р’ открывшемся РѕРєРЅРµ редактора Visual Basic появится текст макроса:
Sub Андрей()
'
' Андрей Макрос
' Макрос записан 01.08.02 Андрей Владимирович Попов
'
 Selection.TypeText Text:="Андрей"
End Sub
Как мы видим, для печати слова в документе был использован метод TypeText объекта Selection.
Макросы в Excel записываются и редактируются аналогичным образом.
Вывод данных из записной книжки в документ Microsoft Word
В качестве примера взаимодействия WSH с Microsoft Word мы рассмотрим два сценария, которые будут создавать документы Word и выводить туда информацию из записной книжки в XML-формате, которая хранится в файле book.xml.
Рис. 8.4. Вывод данных из XML-файла в документ Word в виде обычного текста
В первом из этих сценариев поля каждой записи будут располагаться друг под другом, т.е. информация печатается в виде обычного текста (рис. 8.4).
Второй сценарий будет заполнять данными из XML-файла строки таблицы в документе Word (рис. 8.5).
Рис. 8.5. Вывод данных из XML-файла в таблицу Word
Вывод записей в виде обычного текста
Для печати данных из book.xml в документ Word в режиме обычного текста мы создадим JScript-сценарий ListWord.js. За основу этого сценария взят рассмотренный в главе 6 сценарий SortNameXMLDOM.js, в котором вывод информации производился в текстовый файл, открываемый затем в Блокноте.
Основная функция Main() сценария ListWord.js начинается с создания объекта WshShell и вызова функции InitPath(), в которой определяются пути к файлам book.xml (переменная PathBook) и out.doc (переменная PathOut):
//Создаем объект WshShell
WshShell = WScript.CreateObject("WScript.Shell");
//Определяем пути к файлам
InitPath();
Для запуска новой копии Microsoft Word мы создаем экземпляр объекта Word.Application:
//Создаем объект Application
WA=WScript.CreateObject("Word.Application");
После запуска Word в нем создается новый пустой документ с помощью метода Add() семейства Documents; ссылка на получающийся в результате экземпляр объекта Document сохраняется в переменной WD:
//Создаем новый документ
wd=WA.Documents.Add();
Так как процесс печати данных из сценария может быть довольно длительным, окно Word мы сделаем видимым и максимизируем его:
//Делаем окно Winword видимым
WA.Visible=true;
//Максимизируем окно Winword
WA.WindowState=wdWindowStateMaximize;
Для того чтобы начать печатать в окне Word, нужно получить ссылку на объект Selection (глобальная переменная Sel), который позволяет работать с выделенным текстом:
//Получаем ссылку на объект Selection
Sel=WA.Selection;
С помощью свойства Font объекта Selection мы устанавливаем размер шрифта, которым далее будет печататься текст: