19.04.2018, 11:32
|
Прохожий
|
|
Регистрация: 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, но ошибка осталась, даже до вывода сообщения, что лист перемещен, не доходит. И я так понимаю надо на каждый файл нажимать который в папке находится. Хотелось просто выделить все файлы в папках и в цикле их открыть перемещать лист сохранять закрывать. Сейчас подумываю, не перемещать лист, а всё с листа скопировать в буфер, открыть другую книгу, добавить в неё лист, присвоить ему нужное имя, и вставить всё. что скопировал из первой книги)
|