Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Решение проблемы печати в Word после совместной работы в Delphi с использованием объектной модели

Delphi , Интернет и Сети , E-mail

Вопрос пользователя заключается в том, что он хочет добавить функционал печати документов, созданных с помощью технологии совместной работы (mail merge) в Word из приложения, написанного на Delphi. Проблема заключается в том, что при попытке печати документа с использованием метода PrintOut либо печатается шаблон без данных, либо возникают ошибки.

Подробное описание проблемы

Пользователь использует следующий код для выполнения совместной работы в документе Word:

wrdApp := CreateOleObjct(word.application);
wrdDoc := wrdApp.Document.Open(TemplateLocation);
wrdMailMerge := wrdDoc.MailMerge;
populateMailMergeDateFile;
wrdMailMerge.Execute;

После выполнения совместной работы пользователь пытается распечатать документ, используя метод PrintOut, но сталкивается с проблемами:

  1. Вызов wrdDoc.PrintOut печатает только шаблон, без вставленных данных.
  2. Вызов wrdMailMerge.PrintOut приводит к ошибкам автоматизации.
  3. Попытки сохранить документ с помощью wrdDoc.Saved := False и wrdDoc.Close(False) перед печатью не решают проблему.

Подтвержденное решение проблемы

Пользователь упоминает, что установил свойство MailMerge.Destination в wdSendToNewDocument перед выполнением совместной работы, но это не помогло. Однако, после изменения порядка операций и сохранения документа перед его печатью, проблема была решена. Важно отметить, что использование False или True в методах сохранения и закрытия документа некорректно. Вместо этого необходимо использовать параметры wdSaveOptions, предоставляемые объектной моделью Word.

Важные моменты и примеры кода

Для корректной печати документа после совместной работы необходимо выполнить следующие шаги:

  1. Выполнить совместную работу и создать новый документ:
wrdMailMerge.Destination := wdSendToNewDocument;
wrdMailMerge.Execute;
  1. Сохранить документ, используя один из параметров wdSaveOptions, например wdSaveOptions[wdSaveCurrentOnly] для сохранения текущего документа:
wrdDoc.SaveAs(OutputLocation, wdSaveOptions[wdSaveCurrentOnly]);
  1. Установить видимость документа на True перед печатью, если это необходимо:
wrdApp.Visible := True;
  1. Выполнить печать активного документа:
wrdApp.ActiveDocument.PrintOut;
  1. Закрыть документ, выбрав соответствующий параметр wdWarnSave, например wdCloseNoSave для закрытия без сохранения:
wrdDoc.Close(wdCloseNoSave);

Заключение

Печать документа после совместной работы в Word из приложения на Delphi требует корректного использования методов объектной модели Word и правильного порядка выполнения операций. Важно помнить, что параметры сохранения и закрытия должны быть выбраны из перечисления wdSaveOptions и wdWarnSave, соответственно, а не использовать булевы значения True и False.

Создано по материалам из источника по ссылке.

Пользователь столкнулся с проблемой печати документов, созданных с помощью технологии совместной работы в Microsoft Word, из приложения, написанного на Delphi, и искал решение для корректного использования объектной модели Word для печати данны


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: E-mail ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 16:52:01/0.0055439472198486/1