Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Связать Delphi и Excel


Автор: StepanP 1.6.2017, 15:59
Добрый день! Программисты, знающие Delphi, помогите пожалуйста, очень нужно!!
Не получается решить проблему, она такова:
На форме расположены компоненты "RadioGroup1", "Edit_time" и "Edit1_predmet". При выборе определенного значения в RadioGroup1 (например "1"), в поле "Edit_time" выводится соответствующее значение времени звонков (оно для справки пользователю), а записанный в поле "Edit1_predmet" учебный предмет заносится в соответствующую ячейку Excel. Но при выборе какого-либо значения в поле "RadioGroup1" Delphi выдает ошибку: Invalid variant operation
Когда удаляю строку excel.Range['E10'] := Form1_week.Edit1_predmet.Text; и все остальные аналогичные, то ошибка не выходит, а необходимо эти два поля связать между собою.
Пробовал через оператор case, но все равно не работает. Иногда ошибка не выходит, но при этом ничего не записывается в файл Excel
Шаблон в Excel, куда нужно занести данные, приведен на фото

Код

procedure TForm1_week.RadioGroup1Click(Sender: TObject);
  var excel: OleVariant;
begin

  if RadioGroup1.ItemIndex=1
    then begin
      Edit_time.Text := '8:00-8:45, 8:50-9:30';
      excel.Range['E10'] := Form1_week.Edit_predmet.Text;
    end;

if RadioGroup1.ItemIndex=2
    then begin
      Edit_time.Text := '10:00-10:45, 10:50-11:30';
      excel.Range['E12']:= Form1_week.Edit_predmet.Text;
    end;

if RadioGroup1.ItemIndex=3
    then begin
      Edit_time.Text := '12:00-12:45, 12:50-13:30';
      excel.Range['E14'] := Form1_week.Edit_predmet.Text;
    end;

if RadioGroup1.ItemIndex=4
    then begin
      Edit_time.Text := '14:00-14:45, 14:50-15:30';
      excel.Range['E16'] := Form1_week.Edit_predmet.Text;
    end;

if RadioGroup1.ItemIndex=5
    then begin
      Edit_time.Text := '15:50-16:35, 16:40-17:20';
      excel.Range['E18'] := Form1_week.Edit_predmet.Text;
    end;

if RadioGroup1.ItemIndex=6
    then begin
      Edit_time.Text := '17:40-18:25, 18:30-19:10';
      excel.Range['E20'] := Form1_week.Edit_predmet.Text;
    end;

if RadioGroup1.ItemIndex=7
    then begin
      Edit_time.Text := '19:20-20:05, 20:10-20:50';
      excel.Range['E22'] := Form1_week.Edit_predmet.Text;
    end;
end;

Автор: kami 11.6.2017, 00:32
Цитата(StepanP @  1.6.2017,  15:59 Найти цитируемый пост)
Delphi выдает ошибку: Invalid variant operation

ну а что ему выдавать?
Объявлена переменная excel, а инициализировать ее, связывать с реальным экселем кто будет? По умолчанию она равна Unassigned, естественно что вылезает ошибка.
Компилятор не на столько волшебник, чтобы по одному наименованию переменной догадаться, что нужно сделать smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)