Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Как закрыть OLE-документ без сохранения?


Автор: ksili 25.1.2006, 07:00
Моя программа работает с Excel через OLE. Когда закрываю Excel,
Код

vExcel.OleProcedure("Quit");

он меня спрашивает, сохранять ли изменения? И пока не щёлкнешь на всплывающем окне, Excel не закроется. А мне надо автоматизировать. Как сказать Экселю, чтоб закрывался сам без сохранений, т.е без участия пользователя?

Аналогичная проблема при сохранении
Код

     vSheet.OleProcedure("SaveAs","груз.xls",);
     vExcel.OleProcedure("Quit");

Спрашивает, перезаписывать ли существующий файл? Надо ответить ДА. Как это сделать из программы?

Автор: ShadeSt 25.1.2006, 09:29
В дельфи я делал так:

Код

    Excel.DisplayAlerts := False;  // Discard unsaved files....
    Excel.Quit;
    Excel := Unassigned;


Тебе надо использовать DisplayAlerts. Вот только как это будет применительно к Си++ я не подскажу, к сожалению.

Автор: sexton 25.1.2006, 10:11
Вот так:
Код

  vExcel.OlePropertySet("DisplayAlerts", 0);
  vExcel.OlePropertyGet("Workbooks").OlePropertyGet("Item",1).OleProcedure("SaveAs", FileName, -4143);
  vExcel.OleProcedure("Quit");
  vExcel.OlePropertySet("Visible", 1);
  vExcel.Clear();
  vExcel = Unassigned;

Автор: ksili 25.1.2006, 10:51
Спасибо. Работает. Теперь могу и закрывать и с сохранением изменений, и без сохранения изменений.
Если не секрет, что за третий параметр -4143?

Автор: sexton 25.1.2006, 12:07
Это код формата файла. Подробнее изучай на http://wladm.narod.ru/Borland/excel.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)