Ага, понятненько, попытаюсь повторить, заходите к нам немного попозже, результат в этом посте тогда выложу, если чего получится
З.Ы. Прекрасно ваш код работает, просто в нём мусора навалом, видимо издержки копипасты, второй диалог лишний, зачем-то циклы крутятся, хотя и не используются, да много чего ещё, вот вариант после правки
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
exApp,exBook,exBook2,exSh,exSh2: Variant;
begin
if not OpenDialog1.Execute then exit;
exApp:= CreateOleObject('Excel.Application');
exApp.Visible:= false;
exBook:= exApp.Workbooks.Open(OpenDialog1.FileName);
exSh:= exApp.ActiveWorkbook.WorkSheets[1];
if not OpenDialog1.Execute then exit;
exBook2:= exApp.Workbooks.Open(OpenDialog1.FileName);
exSh2:= exApp.ActiveWorkbook.WorkSheets[1];
exSh2.Move(EmptyParam, exBook.WorkSheets[1]);
exBook.Save;
exBook.Close;
exBook2.Close;
exApp.Quit;
exApp:= Unassigned;
ShowMessage('Лист перемещен');
end;
углубляться не стал, хотя следовало бы - при вылете, напр. если диалог закроется пустым или что сорвётся, экзель останется висеть в процессах, нужна обработка исключений, но это как говорится, не ходовая