当自动化应用程序退出时,如何避免Excel显示“保存”对话框

时间:2012-10-23 18:38:59

标签: excel delphi excel-2010 office-automation

我有一个用Delphi编写的excel自动化应用程序,它访问给定的excel工作簿并提取应用一些内部逻辑不同的工作表数据。

它在Excel 2003和2007上运行了多年。

最近,一些用户拥有Excel 2010.在这些用户上,当我的应用程序退出时,Excel会显示一个对话框,要求用户保存未修改的工作表。该消息说明了以新的2010格式保存的公式版本。对不起,我没有确切的话,因为它不是英语办公室套餐。

我的应用程序如何防止excel 2010显示这个烦人且无用的盒子?

大多数用户都拥有Excel 2007,因此无论运行我的应用程序的用户的实际Excel版本如何,我的应用程序需要处理的大多数文件都采用该格式,并且将来会进行迁移所有文件都不是一个选项。

1 个答案:

答案 0 :(得分:12)

这是通过自动化打印Excel工作表的例程。在经常出现excel保存对话框出现问题之后,这个例程解决了所有麻烦:

procedure PrintExcelReport( Const filename : String;
                                  sheet    : Integer);
{- Sheet is counted from 1 and upwards !! }
Var 
  App : OleVariant;
begin
  App:= CreateOleObject('Excel.Application');
  Try
    App.Visible:= 0;
    App.WorkBooks.Open(ExpandUNCFileName(filename),1);  // Open read only
    Try
      App.ActiveWorkBook.WorkSheets[sheet].Select;
      App.ActiveWorkBook.ActiveSheet.PrintOut; // Prints active sheet
    Finally
      App.ActiveWorkBook.Saved:= 1;
      App.DisplayAlerts:= 0;
      App.ActiveWorkBook.Close(SaveChanges:= 0);
    End;
  Finally
    App.Quit;
    App:= UnAssigned;
  End;
end;

使其适合您的应用程序。