Mailmerge в MSOffice 2010 против пробной версии с Delphi - PullRequest
1 голос
/ 17 августа 2011

Я пытаюсь автоматизировать приложение членства в Delphi с помощью word2010, создав вместо объекта формы oleobject:

wrdApp := createoleobject('word.application');

открывает шаблон слияния:

wrdDoc := wrdApp.Documents.Open('user definable template location')
wrdMailMerge := wrdDoc.MailMerge;

Создайте и заполните почтовое слияние DataDoc.docx с полями и данными, извлеченными из базы данных членов.

CreateMailMergeDataDile;
PopulateMailMergeDataFile;

Выполните слияние:

wrdMailMerge.Destination := wdSendToNewDocument;
wrdMailMerge.Execute(False);

Очистите:

wrdDoc.Saved := True;
wrdDoc.Close(False);
DeleteFile(DataDoc.docx);

Показать слово:

wrdApp.Visible := True;

Это работает как брелок в моей пробной версии Word2010, как для одного, так и для нескольких почтовых рассылок из моей базы данных о членстве.

Однако я только что проверилна ПК с полной версией Word2010 и получил ошибку:

"Этот метод или свойство недоступны, поскольку текущему основному документу слияния почты требуется источник данных"

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

Кто-нибудь получил какие-либо подсказки, почему это происходит, или почемуБудет разница между автоматизацией с полной и пробной версиями.Возможно, это даже может быть решено с помощью плагина?

Большое спасибо

Редактировать: Ниже моя функция CreateMergeDataFile:

  procedure TForm1.CreateMailMergeDataFile;
var
  wrdDataDoc : Variant;
begin
// Open a data source from C:\Leisure\Membership\Documents containing the field data
  If FileExists(DocumentDirectory+'\..\DataDoc.docx') then
  DeleteFile(DocumentDirectory+'\..\DataDoc.docx');
  CopyFile(PChar(DocumentDirectory+'\..\MergeFields.docx'),PChar(DocumentDirectory+'\..\DataDoc.docx'),True);
  wrdDoc.MailMerge.OpenDataSource(DocumentDirectory+'\..\DataDoc.docx',EmptyParam, EmptyParam, EmptyParam,
                             EmptyParam, EmptyParam, EmptyParam, EmptyParam,
                             EmptyParam, EmptyParam, EmptyParam, EmptyParam,
                             EmptyParam, EmptyParam, EmptyParam, EmptyParam);
end;

Кроме того, этот код действует только еслиВерсия msword - 14.0 (2010), определенная ранее созданным приложением word.application, хотя мне сказали, что это не нужно прекращать.

1 Ответ

1 голос
/ 19 августа 2011

ОК, просто для закрытия. У меня есть решение ...

Я не знаю, почему, но, по-видимому, в некоторых установках источник данных может отсоединиться от документа, возможно, после его повторного открытия и редактирования.

Я просто добавил строку кода, чтобы снова открыть источник данных после его сохранения и до выполнения слияния.Работает угощение.

Спасибо за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...