Можно просто и подсократить
Код:
procedure TForm7.Button1Click(Sender: TObject);
var
i, j: integer;
begin
ProgressBar1.Position:=0;
Timer1.Enabled:=true;
MyDoc := CreateOleObject('Excel.Application');
MyDoc.Workbooks.Open(ExtractFilePath(Application.ExeName)+'Отчет.xlt');
MyDoc.Visible := False;
MyDoc.Range['D4'] := ComboBox1.Text;
MyDoc.Range['E6'] := DateTimePicker1.DateTime;
MyDoc.Range['G6'] := DateTimePicker2.DateTime;
MyDoc.Range['D10'] := Edit1.Text;
MyDoc.Range['D12'] := Edit2.Text;
j:= 1;
for i := 18 to 39{40} do
begin
// Заполнение столбца "Отчетные документы"
MyDoc.Range['C' + IntToStr(i)]:= StringGrid1.Cells[0,j];
// Заполнение столбца "Стоимость"
MyDoc.Range['J' + IntToStr(i)]:= StringGrid1.Cells[1,j];
Inc(j);
end;
MyDoc.DisplayAlerts := False;
MyDoc.ActiveWorkBook.SaveAs(ExtractFilePath(Application.ExeName)+'Отчет_'+FormatDateTime('ddmmyyyy_hhmm', Now)+'.xls');
end;