Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2009, 16:38   #11
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

смотрите 9 пост
kate158 вне форума Ответить с цитированием
Старый 22.09.2009, 18:52   #12
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию

Цитата:
Сообщение от kate158 Посмотреть сообщение
пытаюсь побороться с ячейками..
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
  D1, D2 : Variant;
  E, W, SB,SH : Variant;
  i:integer;
BEGIN
    E  := CreateOleObject('Excel.Application');
      E.DisplayAlerts  := False;
      for i:=0 to Memo1.Lines.Count - 1 do
      E.WorkBooks.Open(trim(Memo1.Lines[i]), ReadOnly:=True);
      W := E.WorkBooks.Item[1];
      SH := W.Sheets.Item[1];
         D1 :=  SH.Range[EditAA.Text].Value;
            showmessage(d1);
            //E.Visible:=true;
               e.WorkBooks.close;
   Application.ProcessMessages;
end;
теперь пользователь может добавить либо диапазон вида D1:D3 либо D5 либо D1;D4;D8
цикл по excel файлам есть, по значениям ячеек нет..
в чем проблема?
Правильно цикла по ячейкам тут и нет
Ты же просто считала диапазон и все. А работать с ним кто будет?

А что ты хочешь сказать фразой?
Код:
       showmessage(d1);
и еще - я конечно не знаю, может у тебя
EditAA и Memo1.Lines[i] - все четко заполненно, но я бы делал хотя бы примитивную проверку на ошибочное содержание. или хотя бы не допустимые символы.

Или хотя бы облачил все в скобки обработки исключения.

Код:
try
{ код работы с эксель мало ли что - может и заглючить по любой причине}
except
{ что делать в случае ошибки в основном коде}
end
а выборка из диапазона D1

Код:
start := 1 { "E11:E15" } первая ячейка нашего диапазона 
end_s :=  4 { ""E11:E15"" } 15 - 11 = последняя

for ki = start to end_s // цикл 
   единичное_значение := VarArrayGet( D1,[ki]);
где VarArrayGet - вытаскивает из диапазона D1 текущую ki ячейку

кажется так если я не ошибаюсь

Вообщем надо организовывать еще цикл по считываемому диапазону причем границы цикла каждый раз заканчивают разным числом, а начинаются
с 1 (единицы), а конец - это число считанных элементов, вне зависимости от диапазон с 100 по 105 или с 11 по 15 все равно будет 1...4 (если у меня все в порядке с математикой)

Кроме того, Если вы считал диапазон E1:J15, что считывание будет идти так.
Код:
 for STLOB = 1 to 6 do// E=1 F=2 G=3.... J=6
 for ki = 1 to 14 do
...
   единичное_значение := VarArrayGet( D1,[ki, STOLB]);
....
то есть мы читаем как бы из массива где Ki - строка STOLB - столбец. По умолчанию столбец не используется.

From Stilet: Оно конечно хорошо, но попрошу не постить подряд свои посты. Если видишь что предидущий твой - подредактируй.
и это пройдет...

Последний раз редактировалось Stilet; 23.09.2009 в 08:40.
grenles вне форума Ответить с цитированием
Старый 23.09.2009, 11:26   #13
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

в общем, вот
Код:
procedure TForm1.Button4Click(Sender: TObject);
var
   f: TextFile;       
   fName: String[80]; 
   i,res: integer;
     D1 : Variant;
  E, W, SB,SH : Variant;
begin
  if not OpenDialog1.Execute then begin
     exit;
     end
     else
  fName := OpenDialog1.FileName; 
  AssignFile(f, fName);
  Rewrite(f);  
  try
  for i:=0 to Memo1.Lines.Count - 1 do
   begin
   E  := CreateOleObject('Excel.Application');
   E.DisplayAlerts  := False;
   E.WorkBooks.Open(trim(Memo1.Lines[i]), ReadOnly:=True);
   W := E.WorkBooks.Item[1];
   SH := W.Sheets.Item[1];
   D1 :=  SH.Range[EditAA.Text].Value;
   writeln(f, (Memo1.Lines[i]+' '+inttostr(d1))); 
      e.quit;
  end;
   finally
   CloseFile(f); 
   end;
   MessageDlg(Данные записаны в файл!',mtInformation,[mbOk],0);
   end;
+ нужно обработать всякие неприятности с экселем.ну, это уже ерунда.

Последний раз редактировалось kate158; 23.09.2009 в 11:38.
kate158 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
автоматическое заполнение данными ячеек в excel kasanad80 Microsoft Office Excel 7 17.07.2009 15:31
Excel выдает ошибку "слишком много различных форматов ячеек" Рогачева Татьяна Microsoft Office Excel 2 14.04.2009 08:50
Чтение Excel ячеек в текстовый фаил jopaz Общие вопросы Delphi 4 06.10.2008 00:04
Суммирование определенных ячеек при переносе Pilot Microsoft Office Excel 5 17.07.2008 12:46
Delphi c SQL и выгрузка в Excel или word girl23 БД в Delphi 7 24.10.2007 17:56