Как я могу избежать диалогового окна "Сохранить Excel" при выходе приложения автоматизации

У меня есть приложение автоматизации Excel, написанное в Delphi, которое обращается к данной книге Excel и извлекает, применяя некоторую внутреннюю логику для разных данных листов.

Он отлично работал годами в Excel 2003 и 2007.

В последнее время некоторые пользователи имеют Excel 2010. На этих пользователях, когда мое приложение завершает работу, Excel показывает диалоговое окно с просьбой сохранить сохраненный лист без изменений. В сообщении говорится о версиях формул, которые будут сохранены в новом формате 2010. Извините, у меня нет точных слов, потому что это не английский офисный пакет.

Как мое приложение помешает excel 2010 показать эту раздражающую и бесполезную коробку?

У большинства пользователей есть Excel 2007, поэтому большинство файлов, которые мое приложение должно обрабатывать, независимо от фактической версии Excel пользователя, использующего мое приложение, находятся в этом формате и будут в будущем, поэтому миграция все файлы не являются параметрами.

1 ответ

Это обычная процедура для печати листа 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;

Адаптируйте его в соответствии с вашим приложением.

licensed under cc by-sa 3.0 with attribution.