У меня есть приложение, которое отлично работало при сохранении в виде файла .doc. С тех пор я пытался получить его, чтобы программа сохраняла как .doc, так и .pdf, это делается с помощью модуля WordXP.
procedure TDocCreator.CloseDocument(ASaveAs : string);
var
LFileName : OleVariant;
begin
LFileName := ASaveAs;
FDoc.SaveAs(LFileName, EmptyParam,EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
LFileName := ChangeFileExt(ASaveAs, '.pdf');
FDoc.SaveAs(LFileName,PDFFileFormat,EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
FWordApp.NormalTemplate.Saved := true;
FWordApp.Quit(True);
FWordApp.Disconnect;
end;
Если я удалю второе сохранение, код будет работать нормально. Исключение «Ошибка команды EOleException» не появляется каждый раз при сохранении документа, но момент, в котором происходит разрыв, - это когда SaveAs для файла .pdf.
Обратите внимание, что у меня есть только 2 доступные процедуры сохранения: SaveAs (Используется выше) и SaveAs2000. Также я нахожусь вдали от машины, которая может компилировать delphi.
Если я что-то пропустил или мне нужно что-то прояснить, я смогу ответить, однако я не смогу протестировать какие-либо изменения кода до вторника.
Спасибо.
Изменить: Хорошо, программа удаленно отлаживается (машина, которая выполняет весь код, не имеет доступа к офису, поскольку она находится на виртуальной машине). Приложение проходит через набор шаблонов, которые объединяются по почте, после чего начинается процесс сохранения. Итак, я сделал 2 документа (этот процесс выполняется в цикле for). Это сработало. Затем я попытался сделать 5 для третьего файла, он вызвал ошибку «Ошибка команды». Что затем не закрывает слово и отменяет оставшийся процесс. При просмотре LFileName его содержимое было «???». Иногда это иноземные персонажи. Хотя ему все еще удается создать файл .doc с правильным файловым форматом. Это имя файла устанавливается вне процедуры, если это имеет значение - «ASaveAs». Другое дело, что файл не открывается никакими другими приложениями. Он выполняет весь процесс, используя слово «приложение», которое открывает программа.