Всем привет, с вами автор блога scriptcoding.ru. Данная публикация рассматривает сохранение документа в Word с помощью программирования и с помощью рядовых методов системы Windows.
По сути, что тут может быть особенно – нажал на кнопку «Сохранить» или «Сохранить Как» и все, радуйся жизни. Но, так как я очень люблю оперировать, тьфу ты… программировать, то я решил рассмотреть решение данной задачи программным путем.
Из всей объектной модели Word, компонентами, которые предоставляют средства для сохранения в ворде документа, являются объект Documentи коллекция Documents. По сути, у объекта Document есть два метода: Save и SaveAs, которые соответствуют диалоговым окнам «Сохранить» и «Сохранить Как«, а коллекция предоставляет только метод Save. Я уже рассматривал данный объект и коллекцию, но не углублялся в методы Save и SaveAs, а все потому, что у метода SaveAs огромное количество параметров, описание которых тянет на отдельную статью. Вот я и решил собрать все это воедино, и описать.
Объект Document – сохранение в ворде
Save(NoPrompt, OriginalFormat) – Показывает, как в ворде сохранить все файлы, которые входят в коллекцию Documents.
NoPrompt – Если значение true, то Word автоматически сохранит все файлы. Если значение false — Word предложит пользователю сохранить каждый файл, изменившийся с момента последнего сохранения.
OriginalFormat — Определяет, как документы будут сохранены в ворде. Содержит значение константы WdOriginalFormat:
- wdOriginalDocumentFormat — 1 — Оригинальный формат.
- wdPromptUser — 2 – Пользователю будет предложено выбрать формат.
- wdWordDocument — 0 – Формат Microsoft Word.
Если сохранение в ворде ранее не производилось, то диалоговое окно "Сохранить как" запросит у пользователя имя файла.
SaveAs(FileName, FileFormat, LockComments, Password, AddToRecentFiles, WritePassword, ReadOnlyRecommended, EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData, SaveAsAOCELetter, Encoding, InsertLineBreaks, AllowSubstitutions, LineEnding, AddBiDiMarks, CompatibilityMode) – Сохранение файла Word с новым именем или форматом (Диалоговое окно «Сохранить Как»).
FileName – Позволяет задать путь и имя сохраняемого файла в ворде. Если задать только имя файла, то произойдет сохранение в ворд в папке по умолчанию – «Мои Документы». Если документ с таким именем уже существует, то произойдет перезапись без уведомления пользователя.
FileFormat – Задаем формат, в котором сохраняется документ в Word. Значение константы WdSaveFormat.
Константа WdSaveFormatпозволяет задать формат PDF (wdFormatPDF – 17) или XPS(wdFormatXPS — 18). Однако, что бы сохранить в ворде файл в этих форматах, вам придется установить расширение SaveAsPDFandXPS, которое доступно на сайте Майкрософт. Смотрите статью «Как в ворде сохранить документ в PDF формате»
LockComments – Содержит логические значения, true — заблокировать документ для комментариев. По умолчанию используется false.
Password – Пароль для открытия.
AddToRecentFiles – Содержит логическое значение, true — добавить документ в список недавно использовавшихся в меню Файл. По умолчанию используется True.
WritePassword — Пароль для сохранения в ворде изменений.
ReadOnlyRecommended — Содержит логические значения, true – открывать только для чтения. По умолчанию используется False.
EmbedTrueTypeFonts — Содержит логические значения, true – сохранить TrueType шрифты вместе с документом.
SaveNativePictureFormat – Параметр используется, если графики были импортированы из другой платформы (например, Macintosh). true — сохранить в ворд только версию Microsoft Windows импортируемых графиков.
SaveFormsData –true — сохранить в ворд данные, введенные пользователем в форме в виде записи.
SaveAsAOCELetter – Параметр актуален, если документ имеет прикрепленное почтовое вложение. true – сохраняем документ Word как AOCE письмо.
Encoding – Отвечает за кодировку текста. По умолчанию используется системная кодировка. Параметр должен содержать значение константы MsoEncoding.
InsertLineBreaks – Параметр используется, если происходит сохранение документа в Word в виде текстового файла. true — вставить разрывы строк в конце каждой строки текста.
AllowSubstitutions – Актуально, если файл ворд сохраняется в виде текстового файла. Значение true позволяет Word заменить некоторые символы в тексте их упрощенными аналогами. Например, символа авторского права. По умолчанию используется значение False.
LineEnding – Определяет форматирование строк и абзацев в документах, сохраненных в виде текстовых файлов. Может быть одним из следующих значений константы WdLineEndingType:
- wdCRLF — 0 — возврат каретки и строки.
- wdCROnly — 1 — Возврат только каретки.
AddBiDiMarks – true — добавить управляющие символы в выходной файл.
CompatibilityMode — Режим совместимости, который Word2010 использует при открытии документа. Значение константы WdCompatibilityMode:
- wdCurrent — 65535 — Совместимость режим эквивалентен последней версии Microsoft Word.
- wdWord2003 — 11 — Word2010 введен в режиме, который наиболее совместим с Word2003.
- wdWord2007 — 12 — Word2010 введен в режиме, который наиболее совместим с Office Word2007.
- wdWord2010 — 14 — Word2013 введен в режиме, который наиболее совместим.
- wdWord2013 — 15 — По умолчанию. Все функции Word 2013 включены.
Если данный параметр отсутствует, то принимается значение 0 – сохраняется текущий режим совместимости.
Коллекция Documents – как в ворде сохранить документ
Save(NoPrompt, OriginalFormat) – Метод выполняет ту же функцию, что и Save объекта Document, только для коллекции Documents.
Хорошо, с теорией закончили, теперь привожу два примера программного кода на языке VBScript и JScript, котрые создают новый документ, вставляют в него форматированный текст, содержащий информацию о сервере сценариев Windows Script Host и сохраняют в ворде данный документ в текущем каталоге (каталог, откуда был произведен запуск сценария).
Программный код на языке VBSCRIPT:
' ---------------------------------------------------------------------------- ' Сохранение документа в Word ' SaveAs.vbs ' ---------------------------------------------------------------------------- Option Explicit dim oWord, oDoc, oSel, oFont, oShell, CurDir set oWord = WScript.CreateObject("Word.Application") set oShell = WScript.CreateObject("WScript.Shell") set oDoc = oWord.Documents oDoc.Add() set oSel = oWord.Selection oWord.Visible = True set oFont = oSel.Font CurDir = oShell.CurrentDirectory 'текущая папка with oFont .Size = 20 .Name = "Times New Roman" .Bold=true .Colorindex=2 end with oSel.TypeText "как в ворде сохранить документ" ' word сохранение файла with oFont .Size = 12 .Bold=false .Colorindex=0 end with With oSel .TypeParagraph .TypeParagraph End With With WScript call TXInsert("Name: ", .Name & "") call TXInsert("FullName: ", .FullName & "") call TXInsert("ScriptName: ", .Name & "") call TXInsert("ScriptFullName: ", .FullName & "") call TXInsert("Path: ", .Path & "") call TXInsert("Version: ", .Version & "") call TXInsert("Application: ", .Application & "") call TXInsert("Timeout: ", .Timeout & "") call TXInsert("BuildVersion: ", .BuildVersion & "") End With oDoc(1).SaveAs CurDir & "\WscInfo_vbs.doc", 0 ' сохранение в ворде Sub TXInsert(a, b) With oSel oFont.Bold=true .TypeText a .EndOf oFont.Bold=false .TypeText b .TypeParagraph End With End Sub |
Программный код на языке JSCRIPT:
// ---------------------------------------------------------------------------- // Сохранение документа в Word // SaveAs.js // ---------------------------------------------------------------------------- var oWord1, oDoc1, oSel1, oFont1, oShell1, CurDir1; oWord1 = WScript.CreateObject("Word.Application"); oShell1 = WScript.CreateObject("WScript.Shell"); oDoc1 = oWord1.Documents; oDoc1.Add(); oSel1 = oWord1.Selection; oWord1.Visible = true; oFont1 = oSel1.Font; CurDir1 = oShell1.CurrentDirectory; //текущая папка with(oFont1){ Size = 20; Name = "Times New Roman"; Bold=true; Colorindex=2; } oSel1.TypeText("как в ворде сохранить документ"); // word сохранение файла with(oFont1){ Size = 12; Bold=false; Colorindex=0; } with(oSel1){ TypeParagraph(); TypeParagraph(); } with(WScript){ TXInsert1("Name: ", Name + ""); TXInsert1("FullName: ", FullName + ""); TXInsert1("ScriptName: ", Name + ""); TXInsert1("ScriptFullName: ", FullName + ""); TXInsert1("Path: ", Path + ""); TXInsert1("Version: ", Version + ""); TXInsert1("Application: ", Application + ""); TXInsert1("Timeout: ", Timeout + ""); TXInsert1("BuildVersion: ", BuildVersion + ""); } oDoc1(1).SaveAs(CurDir1 + "\\WscInfo_js.doc", 0); // сохранение в ворде function TXInsert1(a, b){ with(oSel1){ oFont1.Bold=true; TypeText(a); EndOf(); oFont1.Bold=false; TypeText(b); TypeParagraph(); } } |
И так, с программированием закончили, теперь можно приступить к разбору программного кода. Обратите внимание, что в примере для JSCRIPT я изменил имена переменных, добавив к ним единицу.
В самом начале происходит подключение различных классов и коллекций, которые позволяет подключить объектную модель Word, и создать новый документ. Далее следует объявление переменной CurDir, она будет хранить путь к текущему каталогу, именно в этот каталог произойдет сохранение документа в ворде. Доступ к текущему каталогу осуществляется через класс WScript.Shell – смотрите статью «Объект WScript.Shell метод ExpandEnvironmentStrings и свойство CurrentDirectory — Переменные среды Windows и текущий каталог«.
Далее с помощью класса Font – статья «Объект Word Font — параметры форматирования шрифта«, происходит настройка параметров текста: цвет, размер и так далее. После с помощью метода TypeText класса Selection происходит вставка фразы «как в ворде сохранить документ«, данная фраза также будет отформатирована: жирный шрифт и увеличенный размер символов. После мы дважды вставляет параграф – метод TypeParagraph.
Следующим этапом является использование несколько раз процедуры TXInsert, который будет передаваться два параметра: две текстовые строки. Все происходит так, что процедура вставляет в документ параметры свойств класса WScript – имя свойства и его значение.
После всей проделанной работы происходит вызов метода SaveAs, которые отвечает за сохранение файла Word. В нашем случае, в сценарии на языке VBSCRIPT произойдет сохранение документа в ворде под именем «WscInfo_vbs.doc«, а в сценарии на языке JSCRIPT – сохранение файла в ворде под именем «WscInfo_js.doc«