Иногда бывает задача получить какие-либо данные из word-кого документа и потом что-то с ними сделать дальше. Так же бывает и обратная задача: необходимо создать Word документ и записать в него какие-либо данные, а затем сохранить его на диск.
В данной заметке приведены небольшие примеры, показывающие как открыть word документ и прочитать из него текстовые данные на VBScript, а так же как создать пустой word документ, добавить в него текстовые данные, а затем записать его.
Пример чтения Word документа на VBScript
Set Wrd = CreateObject("Word.Application") Set Doc = Wrd.Documents.Open("C:test.doc") Set Pars = Doc.Range().Paragraphs For Each Par In Pars txt = Par.Range.Text ' Что-то делаем с текстовыми данными из word-кого документа Next Doc.Close Wrd.Quit False
Сначала запускаем Word в 1-й строке, во 2-й строке открываем word-кий документ (путь лучше указывать абсолютный).
Затем в 3-й строке получаем все параграфы, которые есть в документе и в 4-й строке в цикле проходим по всем.
В двух последних строках закрываем документ и закрываем сам Word, изменения не сохраняем (False).
Пример создания Word документа и добавления текста на VBScript
Set Wrd = CreateObject("Word.Application") Set Doc = Wrd.Documents.Add() Set Par = Doc.Content.Paragraphs.Add Par.Range.Text = "Пример текста" Par.Range.Font.Bold = True Par.Range.InsertParagraphAfter() Doc.SaveAs("c:Мои документыtest.docx") Wrd.Quit
Первые 2 строки запускают Word и содают новый документ.
Строки 4-7 добавлют параграф с текстом, выделенным жирным шрифтом.
Последние строки сохраняют документ под именем test.docx и закрывают word.
Пример создания Word документа и добавления в него таблицы
Set Wrd = CreateObject("Word.Application") Set Doc = Wrd.Documents.Add() Set Table = Doc.Tables.Add(Doc.Bookmarks.Item("endofdoc").Range, 3, 5) Table.Range.ParagraphFormat.SpaceAfter = 6 For r = 1 To 3 For c = 1 To 5 Table.Cell(r, c).Range.Text = "Ячейка " & r & " x " & c Next Next Table.Rows.Item(1).Range.Font.Bold = True Table.Rows.Item(1).Range.Font.Italic = True Doc.SaveAs("c:Мои документыtest.docx") Wrd.Quit
Эти простые примеры показывают минимальные возможности автоматизации чтения и записи word документов на VBScript, а дальше, можно написать более сложные программы, используя те же приемы, что используются в Visual Basic или других языках для работы с word-ом.
Всем привет.
В данной статье я расскажу вам про базовый функционал для работы с Microsoft Office при помощи VBS.
Ниже привожу код, который я подробно прокомментировал:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Option Explicit ‘ Инструкция, которая будет «ругаться», если переменные не будут явно объявляться Dim oWord ‘ объявляем переменные Dim oDoc Dim oSelectionPlace Set oWord = CreateObject(«Word.Application») ‘ Создаём объект с Word-ом oWord.Visible = True ‘ делаем видимым Word Set oDoc = oWord.Documents.Add() ‘ Добавляем документ Set oSelectionPlace = oWord.Selection ‘ Получаем доступ к выделенной области oSelectionPlace.TypeParagraph() ‘ Делаем параграф oSelectionPlace.Paragraphs.Alignment = 1 ‘ Выравнивание текста по центру. 0 — левый край, 1 — по центру, 2 — правый край, 3 — по ширине oSelectionPlace.Font.Name = «Calibri» ‘ Указываем желаемый шрифт oSelectionPlace.Font.Size = «40» ‘ Указываем размер шрифта oSelectionPlace.Font.Bold = True ‘ Устанавливаем жирный текст oSelectionPlace.Font.Color = RGB(19, 77, 158) ‘ Устанавливаем цвет текста oSelectionPlace.TypeText «Progtask.ru» ‘ Вводим текст oSelectionPlace.TypeParagraph() ‘ Делаем параграф oSelectionPlace.Font.Size = «20» ‘ Устанавливаем размер шрифта oSelectionPlace.Font.Color = RGB(167, 8, 93) ‘ Устанавливаем цвет текста oSelectionPlace.TypeText «Записки программиста» ‘ Вводим текст oDoc.Save ‘ сохраняем документ oDoc.Close ‘ закрываем документ oWord.Quit ‘ закрываем Word |
Результат выполнения данного скрипта:
Кстати, для того чтобы русский текст отображался нормально, а не кракозябрами, файл необходимо сохранять в кодировке UCS-2 LE BOM. Это можно сделать к примеру через Notepad++:
Надеюсь вам помогла данная статья.
Загрузка…
Используем сценарии VBScript
Создавать текстовые файлы, используя сценарии, достаточно легко, так как среда Windows в целом и окружение Windows Script Host (WSH) в частности предоставляют специальные средства для работы с текстовыми файлами. Однако, хотя текстовые файлы идеальны для хранения простой неструктурированной информации, их недостаточно в случае более сложных требований. Если необходимо представить иерархическую информацию, можно воспользоваться средствами XML и создавать текст с метками, содержащий (или не содержащий) обращение к схеме. Однако часто приходится создавать документы, которые представляют информацию, использующую сложную разметку. Файлы HTML являются альтернативой связывания данных и сложной разметки страницы. Однако документы HTML представляют собой открытый текст и в принципе являются легкой добычей для злоумышленников. К тому же документы HTML редко бывают самодостаточными и часто содержат ссылки на внешние ресурсы, такие как изображения, управляющие элементы ActiveX и апплеты.
В отличие от рассмотренных выше решений, пакет Microsoft Word фактически является стандартом в документообороте реального мира. Создавать такие документы в интерактивном режиме легко, но можно ли автоматизировать этот процесс, создавая программно и используя документы, основанные на шаблонах? Да, и сейчас я объясню почему. Я не буду вдаваться в детали той стороны процесса, которая касается работы в пакете Word. Вместо этого я уделю внимание программному созданию и управлению документами, предположив, что читатели знакомы с основами работы с шаблонами и закладками Word.
Использование шаблонов Word
Иногда мне бывает нужно подготовить счета, потом распечатать их для рассылки писем или распространить с помощью электронной почты. Обычно я открываю Word, выбираю свой шаблон счета, ввожу необходимую информацию и сохраняю файл как новый документ. Потом я посылаю счет клиенту по обычной почте либо в качестве документа, прикрепленного к электронному сообщению.
В большинстве случаев счета и другие формы являются простыми документами, использующими одинаковые шаблоны, но содержат различную информацию, такую как дата, номер счета, описание и сумма счета. Шаблон, на котором основан документ, обычно содержит одно или несколько пустых полей, в которые пользователи могут добавлять данные, характерные для конкретной формы.
В пакете Word можно создавать формы для стандартных документов, таких как счета, настраивая файл-шаблон с расширением .dot. Когда требуется подготовить новый документ на основе шаблона, следует щелкнуть на пункте меню File, New. После выбора нужного шаблона в окне New и нажатия кнопки OK Word создает и отображает новую форму, основанную на этом шаблоне. В соответствующие поля пустой формы вводится различная информация.
При использовании Word в интерактивном режиме пользователь может видеть, куда необходимо ввести информацию. Но как заставить вводить различную информацию в нужные поля сценария WSH? Прежде чем я отвечу на этот вопрос, давайте рассмотрим объектную модель Word — инфраструктуру на основе COM, которая помогает программно управлять поведением пакета Word.
Объектная модель Word
Объектная модель Word содержит богатую и сложную иерархию объектов. Эта объектная модель программно раскрывает интерактивные функции Word для ориентированных на COM клиентов (т. е. сценариев WSH и Visual Basic(VB)). Корневым элементом объектной модели Word является объект Word.Application. Для создания экземпляра этого объекта необходимо использовать следующий код:
Dim word Set word = CreateObject _ (Word.Application)
Объектная модель Word работает с исполняемым файлом Word (winword.exe), а не с отдельной библиотекой DLL. Таким образом, каждый экземпляр объекта Word.Application эквивалентен запуску и работе экземпляра приложения Word. Однако эти экземпляры невидимы. А поскольку мы не можем их видеть, есть риск появления множества экземпляров, которые существуют бесцельно, понапрасну расходуя системные ресурсы. Чтобы избежать распространения бесполезных экземпляров Word, необходимо сделать так, чтобы сценарии всегда освобождали объект после завершения работы с ним с помощью метода Quit:
word.Quit
Хотя заново создаваемые экземпляры Word по умолчанию невидимы, можно сделать их видимыми, задав свойству Visible значение True:
word.Visible = True
Когда экземпляр виден, можно закрыть приложение вручную. Установка свойства Visible в True может очень пригодиться при отладке приложений Word на основе сценариев.
Работа с элементами объектной модели Word полностью совпадает с работой приложения в интерактивном режиме. После инициализации приложения мы создаем новый документ или открываем существующий. Для создания нового пустого документа на основе определенного шаблона следует вызвать метод Add из коллекции Documents и указать файл .dot, где хранится нужный шаблон. Приведенный ниже код создает документ, который содержит возможности, встроенные в шаблон, названный Invoice:
Set doc = _ word.Documents.Add(invoice.dot)
Для открытия существующего документа следует использовать коллекцию Documents, содержащую объекты Document. Код, приведенный в листинге 1, открывает документы invoice.doc и expenses.doc. Этот фрагмент кода сначала открывает файл invoice.doc, потом — expenses.doc. Здесь статус программно созданного документа в точности соответствует статусу документа-шаблона, который вы открыли интерактивно с помощью пункта Open меню File, работая в приложении Word. Если вы сделали экземпляр видимым, на экране появятся окна документов из файлов invoice.doc и expenses.doc.
Переменные doc1 и doc2, используемые в листинге, ссылаются на объекты, представляющие вновь открытые документы Word. Также можно использовать индекс к коллекции Documents для обращения к открытым файлам. Например, следующий код возвращает ссылку на первый открытый документ:
Set doc1 = word.Documents(0)
Этот фрагмент кода эквивалентен присвоению переменной doc1 результата вызова метода Documents.Add, как показано во второй строке листинга 1.
Программный интерфейс объекта Document содержит все функции, доступные в меню File и Edit пакета Word. Для печати документа следует использовать метод PrintOut объекта Document; для записи документа в другое место — метод SaveAs. Когда Word применяется интерактивно, оба метода представляют диалоговое окно, позволяющее выбрать принтер и путь. При использовании метода PrintOut или SaveAs можно указать принтер или путь к файлу в качестве аргумента, как показано ниже:
doc.SaveAs _ C:data ewinvoice.doc
Когда путь указывается в качестве аргумента, диалоговое окно не отображается.
Метод SaveAs также позволяет вводить дополнительный аргумент, для указания выходного формата (например, документ Word, формат Rich Text Format (RTF) — Word 6.0, неформатированный текст). Приведенный ниже фрагмент кода показывает, как сохранить документ в формате RTF:
Const wdFormatRTF = 6 docn.SaveAs _ C:data ewinvoice.doc, _ wdFormatRTF
За дополнительной информацией о константах, обозначающих различные форматы файла, следует обратиться к документации пакета Word.
Чтобы закрыть документ, нужно использовать метод Close:
doc1.Close
При закрытии документа все документы, открытые после него, автоматически перемещаются на одну позицию вверх. Так что, если использовать код:
Set doc1 = word.Documents(0) Set doc2 = word.Documents(1)
и впоследствии закрыть ссылку на переменную doc1, на позиции переменной doc2 в массиве окажется Documents(0).
Когда работа с документами Word ведется программно, можно связывать форматы и стили с абзацами, словами и символами в документе, так же как при интерактивном использовании Word. Кроме того, можно добавлять комментарии и закладки к элементам документа. При программном создании документов Word на основе шаблона можно использовать закладки для ввода пользовательских данных в нужные места документа.
Использование закладок в пакете Word
Под закладкой понимается связь между именем и определенным местом в документе Word. Закладки — особенность пакета Word, которую можно использовать для пометки выбранного текста, графики, таблиц или любого другого элемента документа. Word хранит закладки в документе. Для добавления закладки в интерактивном режиме следует выбрать текст или элемент, который требуется пометить, потом выбрать пункт Bookmark в меню Insert. В окне Bookmark нужно ввести имя создаваемой закладки.
Например, предположим, у нас есть шаблон Word (файл .dot) и нам нужно просмотреть текущие данные в определенной позиции. Откроем шаблон и выберем область, отведенную под данные. Чтобы упростить правку шаблона в будущем, можно ввести текст указателя места заполнения, описывающий данную область (например: данные о счете размещать здесь). После ввода текста указателя места заполнения следует выбрать текст, выбрать в меню Insert пункт Bookmark, ввести имя закладки (например, InvoiceDate), после чего сохранить шаблон.
После того как будет программно создан на основе шаблона новый документ, нужно использовать коллекцию Bookmarks документа для распознавания закладок и изменения их текста. Например, чтобы ввести данные в закладку InvoiceDate, необходимо использовать код, подобный следующему:
Set dateBookMark = _ doc.Bookmarks(InvoiceDate) dateBookMark.Range.Text = _ 7/1/2002
Как показывает данный фрагмент кода, обращение к закладке осуществляется через ее имя. Имя закладки указывает на нужный помеченный объект в коллекции Bookmarks документа. Свойство Range является объектом класса TextRange. Это свойство определяет настройки области текста закладки. Свойство Text объекта TextRange позволяет читать и переписывать текущее значение закладки. Приведенный выше фрагмент кода задает для даты счета значение 7/1/2002.
Создание счета
После программного создания документа на основе шаблона следует использовать закладки для заполнения формы счета свежими данными и сохранить документ в новый файл. Теперь можно распечатать документ, отправить его кому-нибудь по электронной почте и т. д.
В листинге 2 показан сценарий CreateInvoice.vbs, который собирает определенную информацию и составляет счет. Код открывает шаблон TestInvoice.dot, расположенный в той же папке, что и сценарий, когда создает новый документ на его основе (можно скачать файл TestInvoice.dot с нашего сайта в разделе Download). На рис. 1 показан шаблон TestInvoice.dot.
Рисунок. Шаблон TestInvoice.dot |
Сценарий CreateInvoice.vbs запрашивает у пользователя номер счета, дату и имя адресата. Код фрагмента A в листинге 2 использует закладки для внедрения этой информации в основной документ. Затем код фрагмента B использует метод SaveAs для сохранения документа в текущей папке. Сценарий CreateInvoice.vbs создает имя готового документа, соединяя номер счета с префиксом inv_. Способ именования и папка назначения заданы условно. В конце сценарий CreateInvoice.vbs закрывает документ и приложение.
Отправка документа по электронной почте
Объектная модель Word содержит метод объекта Document, который позволяет послать документ по электронной почте:
doc.SendMail
Как можно заметить, метод SendMail не имеет аргументов. Он вызывает зарегистрированный клиент интерфейса Messaging API (MAPI) — обычно Microsoft Outlook или Outlook Express. Появляется окно электронного письма с присоединенным к нему документом Word. Пользователь просто заполняет поле To и нажимает кнопку Send. В папке Sent Items почтового клиента автоматически регистрируется отправка сообщения. Если пользовать не имеет постоянного соединения, почтовый клиент помещает сообщение в папку Outbox для отправки при следующем подключении.
При использовании метода SendMail необходимо убедиться, что сценарий не закрывает приложение Word до появления окна электронной почты. Метод SendMail работает асинхронно относительно основного сценария, поэтому сценарий не имеет возможности убедиться в том, что метод закончил отправку сообщения. Если сценарий попытается закрыть Word до завершения работы метода SendMail, система выдаст сообщение, что невозможно закрыть Word, пока не завершится выполнение команды. Если окно с таким сообщением появляется, пользователь должен закрывать его вручную. Чтобы избежать подобной ситуации, можно добавить вызов процедуры Sleep, как я сделал во фрагменте B листинга 2, чтобы временно остановить выполнение сценария и дать методу SendMail время на завершение. Кроме того, можно добавить собственное окно подтверждения в свой сценарий, тогда пользователь сможет подтверждать отправку письма. Приведенный ниже код отображает окно подтверждения Done непосредственно перед тем, как сценарий закрывает Word:
doc.SendMail MsgBox Done
Большинство форм сегодня представляют собой простые документы Word. После интерактивного создания шаблона в пакете Word можно без труда написать сценарий, подобный приведенному в статье, для заполнения формы пользовательской информацией, после чего позвольте окружению WSH и объектной модели Word завершить начатое.
Оценив это простое и эффективное решение, многие захотят использовать его для других распространенных форм, например для отчетов о расходах и запросов на подписку. Также с его помощью можно повысить функциональность сценариев. Например, можно совместить автоматическое создание счетов с доступом к базе данных, так что сценарий станет автоматически возвращать следующий сводный номер счета. Или можно сделать так, чтобы сценарий добавлял запись в базу данных для слежения за счетом. Для этого можно расширить сценарий CreateInvoice.vbs кодом на основе ADO, который запрашивает базу данных о последнем номере счета и выполняет запрос INSERT для добавления новой записи.
Дино Эспозито — Работает в Риме преподавателем и консультантом. С ним можно связаться по адресу: dinoe@wintellect.com
Листинг 1. Код, открывающий существующий документ
Dim doc1, doc2 Set doc1 = _ word.Documents.Add(invoice.doc) Set doc2 = _ word.Documents.Add(expenses.doc)
VBScript Scripting Techniques > OLE Automation > MS Word
- SaveAs: convert MS Word documents to HTML
- SaveAs: convert MS Word documents to PDF
- SaveAs: convert MS Word documents to RTF
- SaveAs: convert MS Word documents to XPS
- CapsLock: use MS Word or WordPerfect to check the CapsLock status
SaveAs Use MS Word to convert Word documents to HTML |
|
---|---|
VBScript Code: | |
Option Explicit
Doc2HTML «C:Documents and SettingsMyUserIDMy Documentsresume.doc» Sub Doc2HTML( myFile ) Const wdFormatDocument = 0 ‘ Create a File System object ‘ Create a Word object With objWord ‘ Check if the Word document exists ‘ Open the Word document ‘ Make the opened file the active document ‘ Save as HTML ‘ Close the active document ‘ Close Word |
|
Requirements: | |
Windows version: | any |
Network: | any |
Client software: | MS Word |
Script Engine: | any |
Summarized: | Works in any Windows version, as long as MS Word is installed. |
[Back to the top of this page] | |
SaveAs Use MS Word to convert Word documents to PDF |
|
VBScript Code: | |
Option Explicit
Doc2PDF «C:Documents and SettingsMyUserIDMy Documentsresume.doc» Sub Doc2PDF( myFile ) ‘ Standard housekeeping Const wdFormatDocument = 0 ‘ Create a File System object ‘ Create a Word object With objWord ‘ Check if the Word document exists ‘ Build the fully qualified HTML file name ‘ Open the Word document ‘ Make the opened file the active document ‘ Save as HTML ‘ Close the active document ‘ Close Word |
|
Requirements: | |
Windows version: | any |
Network: | any |
Client software: | MS Word 2007 and the Microsoft Save as PDF or XPS Add-in for 2007 Microsoft Office programs |
Script Engine: | any |
Summarized: | Works in any Windows version, as long as MS Word 2007 and the Microsoft Save as PDF or XPS Add-in for 2007 Microsoft Office programs are installed. |
[Back to the top of this page] | |
SaveAs Use MS Word to convert Word documents to RTF |
|
VBScript Code: | |
Option Explicit
Doc2RTF «C:Documents and SettingsMyUserIDMy Documentsresume.doc» Sub Doc2RTF( myFile ) ‘ Standard housekeeping Const wdFormatDocument = 0 ‘ Create a File System object ‘ Create a Word object With objWord ‘ Check if the Word document exists ‘ Build the fully qualified HTML file name ‘ Open the Word document ‘ Make the opened file the active document ‘ Save as HTML ‘ Close the active document ‘ Close Word |
|
Requirements: | |
Windows version: | any |
Network: | any |
Client software: | MS Word |
Script Engine: | any |
Summarized: | Works in any Windows version, as long as MS Word is installed. |
[Back to the top of this page] | |
SaveAs Use MS Word to convert Word documents to XPS (XML PaperSpecification) |
|
VBScript Code: | |
Option Explicit
Doc2XPS «C:Documents and SettingsMyUserIDMy Documentsresume.doc» Sub Doc2XPS( myFile ) ‘ Standard housekeeping Const wdFormatDocument = 0 ‘ Create a File System object ‘ Create a Word object With objWord ‘ Check if the Word document exists ‘ Build the fully qualified XPS file name ‘ Open the Word document ‘ Make the opened file the active document ‘ Save in XML Paper Specification (XPS) format ‘ Close the active document ‘ Close Word |
|
Requirements: | |
Windows version: | any |
Network: | any |
Client software: | MS Word 2007 and the Microsoft Save as PDF or XPS Add-in for 2007 Microsoft Office programs |
Script Engine: | any |
Summarized: | Works in any Windows version, as long as MS Word 2007 and the Microsoft Save as PDF or XPS Add-in for 2007 Microsoft Office programs are installed. |
[Back to the top of this page] |
This demo script can be downloaded here.
The downloadable version also contains other file filter constants.
Наконец то я смогу написать статью с примерами. Дело в том, что ключевым компонентом объектной модели Word является не сам объект Word.Application, а коллекция Documents, так как именно она предоставляет два ключевых метода – для создания и открытия документа Word. Конечно, у коллекции Word Documents есть и другие методы и свойства, но они не столь важны. И поэтому, мы рассмотрим только самые основные.
Сама по себе коллекция Documents хранит в себе набор всех объектов Document, которые в свою очередь позволяют работать с каждым экземпляром документа в отдельности. Я буду приводить примеры как в самом редакторе VBA, как и с помощью сценариев Windows Scrip Host.
Единственно свойство, которое позволяет узнать общее количество элементов коллекции является Count:
Count – содержит количество открытых в данный момент документов.
Для примера, откройте несколько word документов и в редакторе VBA пропишите следующий код (просто создайте новый модуль):
For Each objDoc In Documents DocName = DocName & objDoc.Name & vbCrLf Next MsgBox DocName DocName = "" For j = 1 To Documents.Count DocName = DocName & Documents.Item(j).Name & vbCrLf Next MsgBox DocName
В данном случае мы использовали два способа бля работы с коллекцией:
- Использовали цикл for each для обработки коллекции
- Использовали свойство count для определения количества элементов в коллекции Documents.
Оба способа позволяют получить имена всех документов открытых в данный момент.
Однако, если мы попробуем проделать аналогичный фокус в сценарии Windows script Host, то никакого результата не получим:
' ----------------------------------------------------- ' Получение имени открытых документов ' documents-count.vbs ' ----------------------------------------------------- Option Explicit dim objWord, objDoc, oDoc, DocName Set objWord = CreateObject("Word.Application") Set objDoc = objWord.Documents For Each oDoc In objDoc DocName = DocName & oDoc.Name & vbCrLf Next MsgBox DocName objWord.Quit
// ------------------------------------------------ // Получение имени открытых документов // documents-count.js // ------------------------------------------------ var objWord, objDoc, oDoc, DocName; objWord = WScript.CreateObject("Word.Application"); objDoc = new Enumerator(objWord.Documents); for (; !objDoc.atEnd(); objDoc.moveNext()){ DocName += objDoc.item().Name+ "n"; } WScript.Echo(DocName); objWord.Quit();
Видимо из внешнего сценария мы можем обработать только ту коллекцию, которую создали тут же.
Методы коллекции Word Documents
Хорошо, теперь давайте рассмотрим некоторые методы коллекции Word Documents, один из методов мы уже использовали выше (Item).
Add(Template, NewTemplate, DocumentType, Visible) – отвечает за создание нового документа, который сразу же открывается, можно выполнить метод без параметров. Параметры:
- Template – задает шаблон для нового документа
- NewTemplate – определяет, сделать ли новый документ шаблоном (TRUE) или нет (FALSE)
- DocumentType – позволяет задать тип создаваемого документа, возможные значения: wdNewBlankDocument, wdNewEmailMessage, wdNewFrameset или wdNewWebPage (новый чистый документ, значение по умолчанию).
- Visible – видимость нового документа (TRUE или FALSE).
При отсутствии параметров, будет создан чистый документ на основе шаблона Normal.dot.
Обратите внимание, что свойство Visible есть и у объекта Word Application, там оно позволяет показать или скрыть все экземпляры объекта Application.
Ниже привожу пример, сценария, в котором создается пять документов, выводится их количество и далее они закрываются:
' -------------------------------------------- ' Создание документов word ' Application Documents Word ' documents-add-word. ' -------------------------------------------- Option Explicit dim objWord, objDoc, i ' Создаем ссылку на объект Word.Application Set objWord = CreateObject("Word.Application") ' Создаем ссылку на объект Documents Set objDoc = objWord.Documents ' Делаем видимым приложение Word objWord.Visible = True ' Создаем пять документов for i=1 to 5 objDoc.Add Next ' Выводим количество созданных документов MsgBox "Количество документов " & objDoc.Count 'Закрываем все документы Word objWord.Quit
// -------------------------------------------- // Создание документов word // Application Documents Word // documents-add-word.js // -------------------------------------------- var objWord, objDoc, i; // Создаем ссылку на объект Word.Application objWord = WScript.CreateObject("Word.Application"); // Создаем ссылку на объект Documents objDoc = objWord.Documents; // Делаем видимым приложение Word objWord.Visible = true; // Создаем пять документов for (i=1; i<=5; i++){ objDoc.Add(); } // Выводим количество созданных документов WScript.Echo ("Количество документов " + objDoc.Count); //Закрываем все документы Word objWord.Quit()
Item(index) переход к заданному элементу коллекции по его индексу. Значение индекса можно задавать как через метод, так и через коллекцию, так как метод Item используется по умолчанию. Следующие две строки кода являются эквивалентными:
Application.Documents(3) Application.Documents.Item(3)
' ------------------------------------------- ' Обработка коллекции документов ' Application Documents Word ' documents-count-word.vbs ' ------------------------------------------- Option Explicit dim objWord, objDoc, i, j, objInfo ' вызываем процедуру CreateDoc Call CreateDoc objInfo = "Имя:" & vbCrLf ' Начинаем перебор коллекции Documents for j=1 to objDoc.Count objInfo = objInfo & objDoc.Item(j).Name & vbCrLf Next ' Выводим имена созданных документов MsgBox objInfo 'Закрываем все документы Word objWord.Quit Sub CreateDoc Set objWord = CreateObject("Word.Application") Set objDoc = objWord.Documents objWord.Visible = True for i=1 to 5 objDoc.Add Next End Sub
// ----------------------------------------- // Обработка коллекции документов // Application Documents Word // documents-count-word.js // ----------------------------------------- var objWord, objDoc, i, j, objInfo CreateDoc() objInfo = "Имя:n"; // Начинаем перебор коллекции Documents for (j=1; j<=objDoc.Count; j++){ objInfo += objDoc.Item(j).Name + "n"; } // Выводим имена созданных документов WScript.Echo(objInfo); //Закрываем все документы Word objWord.Quit() function CreateDoc(){ objWord = WScript.CreateObject("Word.Application"); objDoc = objWord.Documents; objWord.Visible = true; for (i=1; i<=5; i++){ objDoc.Add(); } }
Open(FileName, ConfirmConversions, ReadOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate, Revert, WritePasswordDocument, WritePasswordTemplate, Format) – открыть заданный документ
- FileName – только этот параметр является обязательным, содержит путь к файлу, если надо открыть несколько документов, то имена разделяются пробелами.
- ConfirmConversions – содержит логическое значение, определяющее, надо ли отображать (TRUE) или нет (FALSE) отображать диалоговое окно Convert File, если документ записан не в формате Word.
- ReadOnly – определяет, открывать ли документ только для чтения (значение TRUE).
- AddToRecentFiles – если значение TRUE, то документ добавляется к списку файлов внизу меню Файл.
- PasswordDocument, PasswordTemplate – пароль к документу или пароль к шаблону, соответственно. Application Documents Word.
- Revert – если данный параметр содержит значение TRUE, то при попытке открыть уже открытый документ, сделанные в нем изменения не будут сохраняться. Если значение FALSE – произойдет простая активизация документа.
- WritePasswordDocument – пароль, который запрашивается при сохранении документа.
- WritePasswordTemplate — пароль, который запрашивается при сохранении шаблона.
- Format – параметр содержит параметр для преобразования файла. Значения: wdOpenFormatAuto (по умолчанию), wdOpenFormatDocument, wdOpenFormatRTF, wdOpenFormatTemplate, wdOpenFormatText, wdOpenFormatUnicodeText.
Save() и Close() – сохранение и закрытие (соответственно) всех документов в заданной коллекции.
‘Create a word Document
Set objWord = CreateObject(«Word.Application»)
objWord.Visible = True
‘Documents collection includes all of the open documents.
‘Add method is used to create a blank document.
‘Document object returned by Add method is assigned to a variable, objDoc.
Set objDoc = objWord.Documents.Add()
‘Open a word Document file
Set wrd = CreateObject(«Word.Application»)
wrd.Visible = True
‘To open an existing document, use the Open method with the Documents collection.
‘The following instruction opens a document «Temp.doc» located in the folder «D:»
wrd.Documents.Open «D:Temp.doc»
Set wrd.Nothing
‘Writting a Text in Word Application
Set oWord = CreateObject(«Word.Application»)
oWord.Visible = True
Set oDoc = oWord.Documents.Add()
Set oSelection = oWord.Selection
‘Selection property represents selected area in a document or an insertion point
oSelection.TypeText = «Sample Text»
‘Formatting the text in the word document
Set oWord = CreateObject(«Word.Application»)
oWord.Visible = True
Set oDoc = oWord.Documents.Add()
Set oSelection = oWord.Selection
‘Setting the Font Name
oSelection.Font.Name = «Arial»
‘Setting the Font Size
oSelection.Font.Size = «20»
‘Setting the type face to Bold
oSelection.Font.Bold = True
oSelection. ParagraphFont.Alignment = 1
‘0 — Aligns text to Left, 1- Aligns text to center
‘2 — Aligns text to Right, 3 — Justify the text
oSelection.TypeText = «Add your text here»
‘Replacing a Word in Word Document
Set oWord = CreateObject(«Word.Application»)
Set oDoc = oWord.documents.Open(«C:WordDocument.docx»)
Set oWords = oDoc.Words
For word = 1 to oWords.Count
oWords.Item(word).Text = Replace(oWords.Item(word).Text, «sample»,»New word»)
Next
oDoc.Save
oDoc.Close
oWord.Quit
Set oDoc = Nothing
Set oWords = Nothing
Set oWord = Nothing
‘Saving the Word Document
To save a single doucument use the Save method with the Document object. The following insturction saves the document named «Sales.doc»
Documents(«Sales.doc»)Save
You can save all open documents by applying Save method to the Documents collection. The following instruction saves all open documents.
Documents.Save
‘To save to a new location use «SaveAs» else use «Save» method to save it on default location
oDoc.SaveAs(«c:MyDoc.doc»)
‘Closing the Word Document
oWord.Quit
‘Working with Tables
Set oWord = CreateObject(«Word.Application»)
oWord.visible = True
Set oDoc = oWord.Documents.Add()
Set oRange = oDoc.Range()
oDoc.Tables.Add oRange,3,3
Set oTable = oDoc.Tables(1)
For Row = 1 to 3
For Column = 1 to 3
oTable.Cell(Row,Column).Range.Text = Row&» Row, «&Column&» Column»
Next
Next
‘Make the First Row Data to Bold
oTable.Rows.Item(1).Range.Font.Bold = True
‘Makes the First Row Data to Italic
oTable.Rows.Item(1).Range.Font.Italic = True
‘Changes the font size
oTable.Rows.Item(1).Range.Font.Size = 12
‘Sets the width of the Column
oTable.Columns.Item(1).SetWidth 100,0
‘Open and Append Text to a Document
Dim oWord
Set oWord = CreateObject(«Word.Application»)
oWord.Documents.Open «c:text.doc»
oWord.Selection.TypeText «Text which is appended to existing document»
oWord.ActiveDocument.Save
oWord.Quit
Set oWord = Nothing
Selection property by default appends the text at the beginning only. To put the statements for selection at the end before entering the text, use the below cose.
Dim oWord
Set oWord = CreateObject(«Word.Application»)
oWord.Documents.Open «c:text.doc»
oWord.Selection.EndKey 6,0
oWord.Selection.TypeText «Text which is appended to existing document»
oWord.ActiveDocument.Save
oWord.Quit
Set oWord = Nothing
‘EndKey method moves the selection to the specified unit.
‘Two parameters are unit and Extend. We have used 6 for unit
‘which is to move at the end of story & 0 as extend which is to move the selection.
‘If you don’t specify these parameters, selection moves to the end of line.
‘Prints the word document
Dim oWord
Set oWord = CreateObject(«Word.Application»)
oWord.Documents.Open «c:test.docx»
oWord.Activedocument.PrintOut
oWord.Quit
Set oWord = Nothing