Delphi и Excel активная ячейка...

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Всем привет!!! Такая вот задачка, в дельфе есть какое-то значение которое нужно вставить в активный excel документ в активную книгу и страницу, в выбранную ячейку пользователем. Т.е. перед запуском проги уже открыт эксель, и стоит курсор на какой-то ячейки, как теперь узнать в дельфе куда нужно вставить значение???
Я накидал ручной тип ввода:

Код: Выделить всё

var
  Form1: TForm1;
  Ex:Variant;
....
procedure TForm1.Excel1Click(Sender: TObject);
begin
Ex:=CreateOleObject('Excel.Application');
If vartype(Ex)=varDispatch then Ex.visible:=true;
end;
...
procedure TForm1.Excel2Click(Sender: TObject);
var
y,x:String;
begin
If vartype(ex)=varDispatch then
 begin
 y:=InputBox('Введите номер строки','Строка','1');
 x:=InputBox('Введите номер столбца','Столбец','1');
 Ex.Workbooks[1].Worksheets[1].Cells[StrToInt(y),StrToInt(x)]:=Edit2.Text;
 end;
end;
причем по нажатию первой кнопки нужно после появления окна экселя открыть нужный документ, потом только высчитать строку и столбец и потом только она вставит значение. А я хочу чтоб усе было на автомате :) Помогите плииззз :)
Eugie
Сообщения: 708
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

Должно работать что-то вроде Ex.ActiveCell := Edit2.Text
Если нет, см. Help по VBA.
YurikGL
Сообщения: 142
Зарегистрирован: 16 фев 2005, 21:54
Откуда: Уфа
Контактная информация:

Нужно запустить запись макроса, сделать действия, которые ты хочешь чтобы делались автоматически, завершить запись макроса, посмотреть как он выглядит.
Код VBA переводится на Delphi достаточно легко.

Т.е. перед запуском проги уже открыт эксель, и стоит курсор на какой-то ячейки, как теперь узнать в дельфе куда нужно вставить значение???
Тогда цепляться нужно так
Ex:=GetActiveOleObject('Excel.Application');// цепляемся к уже открытому Excel-ю
А потом
Ex.ActiveCell.FormulaR1C1:='asdf'
или что-то типа
Ex.ActiveCell.Formula:='asdf'
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Отлично! Я так и подумал, но что-то не попробовал...
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Ответить