Изменяю некоторый ячейки в файле Excel, используя ADOQuery через MS Jet.
Код:
ADOQuery1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'
+ 'Data Source=' + OpenExlDialog.FileName + ';'
+ 'Extended Properties="Excel 8.0;HDR=No";'
+ 'Mode=ReadWrite;'
+ 'Persist Security Info=False';
for i := 0 to node.ChildNodes.Count - 1 do begin
with ADOQuery1 do begin
EmphsExl := node.ChildNodes[i].Attributes['hs'];
OperSumExl := DecryptInt(node.ChildNodes[i].Attributes['s']);
Prepared;
Parameters.ParamValues['@Emphs'] := EmphsExl;
Parameters.ParamValues['@OperSum'] := OperSumExl;
ExecSQL;
end;
end;
ADOQuery1.Close;
Все срабатывает, но только файл Excel не сохраняется и остается недоступен, пока программа открыта (при попытке открыть этот файл MS Excel выдает ошибку о недоступности). Если закрыть программу, файл Excel сохраняется и его можно открыть самим MS Excel. Почему так и как его сохранить и закрыть не закрывая программы?
Единственное похожее, что нашел — это
связи access на sql.ru в разделе delphi, но там нет решения проблемы.
Заранее благодарю за ответ.