Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 19.04.2018, 12:54
brookhut brookhut вне форума
Прохожий
 
Регистрация: 21.05.2017
Сообщения: 13
Версия Delphi: rad studio xe8
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Так что, выходит имена файл-реципиента и файл-донора, или их нумерация в разных папках совпадают? А несколькими постами выше вроде была обратная информация
если в цикле открывать файлы, они открываются друг за другом, соответственно, если у нас в папках одинаковое количество файлов, после операции с первой парой файлов, цикл должен перейти к следующей паре или я сильно ошибаюсь и заблуждаюсь ? в папках файлы с именами вида: папка№1(f1№1a, f1№2a), папка№2(f2№1b, f2№2b)

Последний раз редактировалось brookhut, 19.04.2018 в 12:59.
Ответить с цитированием
  #17  
Старый 19.04.2018, 13:03
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Они открываются смотря какая выбрана сортировка в проводнике сиречь диалоге выбора файлов, могут по-имени (в алфавитном порядке), могут по дате создания или размеру etc. но к сожалению, обед завершился, пора под клиентские авто лезть, но глядишь, к вечеру чегонить и соберётся по вашей теме, удачи!
Ответить с цитированием
  #18  
Старый 19.04.2018, 17:22
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Вот про цикл немного
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
 i,j: integer;
 exApp,exBook,exBook2,exSh,exSh2: Variant;
begin
 if not OpenDialog1.Execute then exit;
 if not OpenDialog2.Execute then exit;
 i:= OpenDialog1.Files.Count;
 j:= OpenDialog2.Files.Count;
 if i-j < 0 then j:= i;

 exApp:= CreateOleObject('Excel.Application');
 exApp.Visible:= false;

 for i := 0 to j-1 do
  begin
   Application.ProcessMessages;
   exBook:=  exApp.Workbooks.Open(OpenDialog1.Files[i]);
   exSh:=  exApp.ActiveWorkbook.WorkSheets[1];
   exBook2:= exApp.Workbooks.Open(OpenDialog2.Files[i]);
   exSh2:= exApp.ActiveWorkbook.WorkSheets[1];
   exSh2.Move(EmptyParam, exBook.WorkSheets[1]);
   exBook.Save;
   exBook:= UnAssigned;
   exBook2:= UnAssigned;
  end; {for}

 exApp.Quit;
 exApp:= Unassigned;
 ShowMessage('Выполнено');
end;
а ниже "кошечки" на чём тренировалси
Вложения
Тип файла: zip ExcelSheetAdd.zip (58.8 Кбайт, 2 просмотров)
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
brookhut (19.04.2018)
  #19  
Старый 19.04.2018, 18:14
Аватар для LIONSMILE
LIONSMILE LIONSMILE вне форума
Новичок
 
Регистрация: 19.03.2018
Сообщения: 51
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от brookhut
ошибку победил убрав
Код:
exBook.close;
exBook2.close;
Этим ты не победил ничего, ты просто убрал команды на закрытие книг MS Excel. Их нужно все равно закрывать или отключать
Код:
exBook:= UnAssigned;
ибо в один прекрасный день он тебе так накопирует, что ручками потом сотню файлов придется разгребать.

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

Цитата:
Сообщение от Alegun
Вот про цикл немного
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
 i,j: integer;
 exApp,exBook,exBook2,exSh,exSh2: Variant;
begin
 if not OpenDialog1.Execute then exit;
 if not OpenDialog2.Execute then exit;
 i:= OpenDialog1.Files.Count;
 j:= OpenDialog2.Files.Count;
 if i-j < 0 then j:= i;

 exApp:= CreateOleObject('Excel.Application');
 exApp.Visible:= false;

 for i := 0 to j-1 do
  begin
   Application.ProcessMessages;
   exBook:=  exApp.Workbooks.Open(OpenDialog1.Files[i]);
   exSh:=  exApp.ActiveWorkbook.WorkSheets[1];
   exBook2:= exApp.Workbooks.Open(OpenDialog2.Files[i]);
   exSh2:= exApp.ActiveWorkbook.WorkSheets[1];
   exSh2.Move(EmptyParam, exBook.WorkSheets[1]);
   exBook.Save;
   exBook:= UnAssigned;
   exBook2:= UnAssigned;
  end; {for}

 exApp.Quit;
 exApp:= Unassigned;
 ShowMessage('Выполнено');
end;
а ниже "кошечки" на чём тренировалси
Работает)), спасибо огромное, выручили.
Ответить с цитированием
  #21  
Старый 19.04.2018, 19:15
brookhut brookhut вне форума
Прохожий
 
Регистрация: 21.05.2017
Сообщения: 13
Версия Delphi: rad studio xe8
Репутация: 10
По умолчанию

Цитата:
Сообщение от LIONSMILE
Этим ты не победил ничего, ты просто убрал команды на закрытие книг MS Excel. Их нужно все равно закрывать или отключать
Код:
exBook:= UnAssigned;
ибо в один прекрасный день он тебе так накопирует, что ручками потом сотню файлов придется разгребать.
Именно, отключение я оставил, забыл упомянуть про это, а слово "победил" надо было взять в кавычки ))
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:33.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter