当自动化应用程序退出时,如何避免Excel显示保存对话框
我有一个用Delphi编写的Excel自动化应用程序,它访问给定的Excel工作簿并提取应用工作表的某些内部逻辑不同数据。当自动化应用程序退出时,如何避免Excel显示保存对话框
得很完美了多年的Excel 2003和2007
最近一些用户有Excel 2010的这些用户,当我的应用程序退出时,Excel显示一个对话框,要求用户保存未修改的工作表。该消息说明了有关以2010新格式保存的公式版本的信息。对不起,我没有确切的词汇,因为它不是英文办公软件包。
我的应用程序如何防止Excel 2010显示这个恼人的和无用的盒子?
大多数用户使用Excel 2007,因此我的应用程序需要处理的大部分文件(无论运行我的应用程序的用户的实际Excel版本)是否都是这种格式,并且将来会如此迁移所有文件不是一个选项。
这是一个通过自动化打印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;
适应它适合你的应用程序。
我实施了轻微的更改,它的工作原理。魔术是在只读中打开的组合,并在关闭之前设置保存。谢谢。 –
万一你想知道为什么我没有完全实现它...当我尝试App.Workbooks.Close(SaveChanges:= 0)时我的逻辑不打开ActiveWorkbook'我得到一个OLE运行时错误,所以我删除它。 –
你能重现这种行为吗? –
你能用你自己的语言给错误吗? – GolezTrol
您是否在应用程序的任何位置关闭工作簿?如果没有,请关闭工作簿而不保存更改,然后退出应用程序。 –