WordXP Delphi命令未能保存为PDF

WordXP Delphi命令未能保存为PDF,delphi,pdf,automation,save-as,Delphi,Pdf,Automation,Save As,我有一个应用程序,它在保存为.doc文件时运行良好。 我已经尝试过获取它,因此程序将同时保存为.doc和.pdf,这是使用WordXP单元完成的 procedure TDocCreator.CloseDocument(ASaveAs : string); var LFileName : OleVariant; begin LFileName := ASaveAs; FDoc.SaveAs(LFileName, EmptyParam,EmptyParam, EmptyParam, Em

我有一个应用程序,它在保存为.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; 
如果我删除第二个saveas,代码就可以正常工作。并非每次保存文档时都会弹出“EOleException Command Failed”异常,但中断发生的时间点是.pdf文件的保存时间

注意:我只有两个可用的保存过程SaveAsUsed和SaveAs2000。我也远离一台可以编译delphi的机器

如果我遗漏了任何东西或者需要清理任何东西,我将能够做出响应,但是直到星期二我才能测试任何代码更改

多谢各位

编辑: 好的,程序正在远程调试,执行所有代码的机器无法访问office,因为它位于VM上。应用程序将通过一组模板进行邮件合并,一旦完成,保存过程将开始。所以我做了两个文档,这个过程是在for循环中完成的。这很有效。然后,我尝试在第三个文件上执行5,它会出现“命令失败”错误。这样就不会关闭word并取消剩余的进程。当查看LFileName时,其内容是“??”。这有时是外国字符。尽管它仍然能够使用正确的filenam创建.doc文件。如果“ASaveAs”有任何区别,则此文件名在过程外部设置。另一件事是该文件没有使用任何其他应用程序打开。它使用程序打开的单词application完成整个过程

  LFileName := ASaveAs;
  try
    try
      FDoc.SaveAs(LFileName,EmptyParam, EmptyParam, EmptyParam, ...);
    except
      on E : Exception do
        ShowMessage(E.ClassName + ' error creating document');
    end;
    try
      if FileExists(LFileName) then
      begin
        Sleep(5000);
        LFileName := ChangeFileExt(ASaveAs, '.pdf');
        FDoc.SaveAs(LFileName,PDFFileFormat,EmptyParam, EmptyParam, ...;
      end;
    except
      on E : Exception do
        ShowMessage(E.ClassName + ' error creating PDF');
    end;
  finally
    FWordApp.Quit(True);
    FWordApp.Disconnect;
  end;

可能会更好,我仍然不确定尝试和例外,但它的工作没有崩溃感谢战术睡眠。可能会更好,也很乐意,但目前看来这是一个不错的解决方案。感谢David Heffernan指出该文件可能正在使用。

如何定义PdfileFormat?安装了哪个版本的Word?@DavidHeffernan PDFFileFormat是一个常量,设置为17。Word 2010,但对我来说,我不能保证将使用哪个版本的Word,我想对任何使用该应用程序的人来说都是2010年,但我不是100%确定。它依赖于Office 97的加载项。请找出失败时正在运行的版本。使用该应用程序的任何人都不会使用office 97。最早的版本是2007年。但回到问题上来,office 2010正在失败。哦,我在说什么?Office 2007我的意思不是97。