Шаг 49.
Автоматизация Microsoft Word. Сохранение документа

    На этом шаге мы рассмотрим способы сохранения документа.

    Самый простой способ сохранения документа заключается в вызове метода Save объекта-документа, например: W.ActiveDocument.Save. Данный способ удобно использовать, если документ ассоциирован с файлом на диске. Когда мы попробуем сохранить с помощью этого метода вновь созданный документ, то откроется диалоговое окно Сохранение документа, активированное приложением Word.

    Возьмем пример 1 из шага 47 и изменим его следующим образом:


Рис.1. Внешний вид приложения

    Обработчик нажатия на кнопку Метод Save следующий:

procedure TForm1.Button5Click(Sender: TObject);
//Метод Save
begin
  W.ActiveDocument.Save;
end;

    Если мы закроем диалоговое окно Сохранение документа без сохранения документа, то получим ошибку. На рисунке 2 отображено диалоговое окно с сообщением об исключительной ситуации, возникшей в режиме отладки программы.


Рис.2. Отображение ошибки выполнения метода Save (режим отладки приложения)

    В режиме выполнения откомпилированного приложения сообщение об этой ошибке будет выглядеть, как показано на рисунке 3.


Рис.3. Отображение ошибки выполнения метода Save (режим выполнения приложения)

    Чтобы избежать появления ошибок выполнения, необходимо при выполнении процедур сохранения документа обрабатывать исключительные ситуации. Используйте конструкцию try ... except ... end среды Delphi. В случаях, когда не нужно выводить диалоговое окно сохранения документа, его можно подавить. Метод подавления диалоговых окон Word будет рассмотрен позже.

    Эффективным способом избежать ошибок, возникающих при сохранении документов, может быть проверка "был документ сохранен или нет" и использование для сохранения метода SaveAs. Для проверки факта сохранения открытого документа на диск используйте свойство документа Saved - если оно имеет значение True, то документ был сохранен, если False - нет.

    Рассмотрим следующий фрагмент программы.

procedure TForm1.Button6Click(Sender: TObject);
//Проверка сохранения документа
begin
  if W.ActiveDocument.Saved then
      MessageBox(0,'Документ сохранен!','Внимание!',MB_OK)
  else
      MessageBox(0,'Документ не сохранен!','Внимание!',MB_OK);
end;

    Результат выполнения - появление диалогового окна с фразой Документ сохранен или Документ не сохранен.

    Текст этого приложения можно взять здесь (6,6 Кб).

    Если вновь созданный документ не был сохранен, то для его записи на диск используется метод SaveAs. В спецификации языка Visual Basic (VB) он описан так:

  ActiveDocument.SaveAs(FileName, FileFormat, LockComrnents, Password, 
      AddToRecentFiles, WritePassword, ReadOnlyRecoramended, EmbedTrueTypeFonts, 
      SaveNativePictureFormat, SaveFormsData, SaveAsAOCELetter)

    Аргументы метода SaveAs определяют режимы и формат файла для сохраняемого документа. Используя их при вызове метода, можно добиться такого же результата, как и в режиме обычного пользователя приложения Word. Аргументы метода, их типы и назначение представлены в таблице 1.

Таблица 1. Аргументы метода SaveAs, их типы и функциональное назначение
Аргумент Тип Функциональное назначение
FileName String Путь и имя файла
FileFormat Число Формат файла, см. таблицу 2
LockComments Boolean True - не сохранять комментарии
Password String Пароль, который будет использоваться при открытии документа
AddToRecentFiles Boolean True - добавить имя файла в список меню File
WritePassword String Пароль, который будет использоваться для сохранения документа
ReadOnlyRecommended Boolean True - в последующем документ можно открыть "только для чтения"
EmbedTrueTypeFonts Boolean True - при сохранении перевести шрифты документа в TrueType
SaveNativePictureFormat Boolean Используется для импорта графики из форматов, не поддерживаемых Windows. True - импортировать только графику, поддерживаемую Windows
SaveFormsData Boolean True - сохранить форму документа без текста
SaveAsAOCELetter Boolean Используется в версиях Word для компьютеров Apple Macintosh

    При вызове метода SaveAs можно задавать как один, так и несколько аргументов - количество определяется только необходимостью их использования в создаваемом приложении. Обычно достаточно первого аргумента (путь и имя файла).

    При вызове метода SaveAs из приложений, созданных в Delphi, есть некоторые отличия синтаксиса от вызова в VB, но они не принципиальны.

    Рассмотрим примеры синтаксиса вызовов метода SaveAs в Delphi.

    Сохранение документа с указанием пути и имени файла:

    Сохранение документа с указанием пути и имени файла, а также пароля:

    Сохранение документа, ассоциированного с именем файла, с указанием пароля:

    Для задания или изменения формата сохраняемого документа необходимо использовать числовой аргумент FileFormat, значения которого представлены в таблице 2.

Таблица 2. Значения аргумента FileFormat метода SaveAs и форматы файлов сохраняемых документов
Константа Значение Формат сохраняемого документа
WdFormatDocument 0 Документ Word (файл с расширением DOC)
WdFormatDOSText 4 Текст DOS (файл с расширением ТХТ)
WdFormatDOSTextLineBreaks 5 Текст DOS с разбиением на строки (файл с расширением ТХТ)
WdFormatRTF 6 Текст в формате RTF (файл с расширением RTF)
WdFormatTemplate 1 Шаблон Word (файл с расширением DOT)
WdFormatText 2 Только текст (файл с расширением ТХТ)
WdFormatTextLineBreaks 3 Текст с разбиением на строки (файл с расширением ТХТ)
WdFormatUnicodeText 7 Кодированный текст (файл с расширением ТХТ) - текст в кодировке UNICODE

    Итак, мы открыли документ, считали из него текст, внесли в документ необходимые изменения и сохранили его. Теперь нужно закрыть его и закончить работу с приложением Word.

    На следующем шаге мы рассмотрим закрытие документа и приложения.




Предыдущий шаг Содержание Следующий шаг