Показать сообщение отдельно
  #9  
Старый 19.04.2018, 11:32
brookhut brookhut вне форума
Прохожий
 
Регистрация: 21.05.2017
Сообщения: 13
Версия Delphi: rad studio xe8
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Ага, понятненько, попытаюсь повторить, заходите к нам немного попозже, результат в этом посте тогда выложу, если чего получится

З.Ы. Прекрасно ваш код работает, просто в нём мусора навалом, видимо издержки копипасты, второй диалог лишний, зачем-то циклы крутятся, хотя и не используются, да много чего ещё, вот вариант после правки
Код:
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;
углубляться не стал, хотя следовало бы - при вылете, напр. если диалог закроется пустым или что сорвётся, экзель останется висеть в процессах, нужна обработка исключений, но это как говорится, не ходовая
Лист из файла№2 переносится в файл№1, но ошибка осталась, даже до вывода сообщения, что лист перемещен, не доходит. И я так понимаю надо на каждый файл нажимать который в папке находится. Хотелось просто выделить все файлы в папках и в цикле их открыть перемещать лист сохранять закрывать. Сейчас подумываю, не перемещать лист, а всё с листа скопировать в буфер, открыть другую книгу, добавить в неё лист, присвоить ему нужное имя, и вставить всё. что скопировал из первой книги)
Ответить с цитированием