Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2016, 21:55   #1
bidzina
Подтвердите свой е-майл
 
Регистрация: 10.01.2013
Сообщений: 16
По умолчанию Как создать минимизированные в TaskBar книги Excel в Delphi

Задача такая:
1. нажимать на кнопке и запускать книгу excel в minimized состоянии в taskbar, чтобы случайно не кликнуть в книге, а то получаю EOleException.
2. когда закончится перенос данных в ексел --> messagebox('success') --> OK --> открыть книгу ексел в состоянии normal.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var row,column,i,j:integer;
ExcelApp: TExcelApplication;
ExcelWB : ExcelWorkBook;
ExcelWSh:ExcelWorkSheet;
MyRange:OleVariant;

const
xlBottom = -4107;
xlLeft = -4131;
xlRight = -4152;
xlTop = -4160;
xlHAlignCenter = -4108;
xlVAlignCenter = -4108;
begin

query1.close;
query1.ParamByName('edit1').Asdate:=strtodate(maskedit1.Text);
query1.ParamByName('edit2').Asdate:=strtodate(maskedit2.Text);
query1.Open;
Query1.Last;
row:=Query1.RecordCount; // number of rows
column:=DBGrid1.FieldCount; // number of columns

ExcelApp := TExcelApplication.Create(nil);

if Assigned(ExcelApp) then begin
ExcelApp.Visible[1] := true;
ExcelApp.WindowState[LOCALE_USER_DEFAULT] := xlMinimized;
ExcelApp.ScreenUpdating[LOCALE_USER_DEFAULT] := true;
end;

ExcelApp.sheetsInNewWorkbook[LOCALE_USER_DEFAULT]:=1;
ExcelWB := ExcelApp.Workbooks.Add(EmptyParam,0);

for j:=1 to column do
ExcelWB.Worksheets.Application.Cells.Item[1,j]:=DBGrid1.Columns[j-1].title.caption;                   
Query1.First;            
for i:=1 to row do
begin
for j:=1 to column do
ExcelWB.Worksheets.Application.Cells.Item[i+1,j]:=DBGrid1.Fields[j-1].AsString;
Query1.Next;
end;

MyRange:= ExcelApp.Range['A1',ExcelApp.Cells.Item[row+1,column]];
myrange.rows[1].font.bold:=true;
myrange.rows[1].font.color:=clgreen;
myrange.entirecolumn.autofit;

Application.MessageBox('Success!','',MB_ICONINFORMATION);
Если при закрытии книги выбрать cancel, тогда и первая книга Excel и следующие создаются в минимизированном состоянии, но если для книги excel выбрать save или don't save и возвращатсья в делфи и снова кликнуть на кнопке, новые книги уже открываются в состоянии Normal, а не minimized. а это мешает работать(при случайном клике в книге получаю EOleException!).

Если из кода убрать ExcelApp.Visible := True, тогда первая книга Excel создаётся в normal состоянии, а остальные новые книги уже открываются в состоянии minimized.
Никакой закономерности!

закомментировать ExcelApp.WindowState[LOCALE_USER_DEFAULT] := xlMinimized тоже ничего не меняет.

Последний раз редактировалось Stilet; 06.01.2016 в 11:55.
bidzina вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт из Delphi в Excel c выбором листа из книги. Nunc Plaudite БД в Delphi 1 03.02.2014 13:39
Как программно снять пароль с книги Excel nFalcon Microsoft Office Excel 19 20.06.2013 00:21
Копировать лист Excel из одной книги в другую через Delphi. S_Yevgeniy Общие вопросы Delphi 1 24.10.2011 15:55
Как изменить размер книги в 2007 Excel poolt Microsoft Office Excel 0 03.12.2010 17:41
Как создать кнопку для всех листов книги? kipish_lp Microsoft Office Excel 5 06.05.2010 17:43