передать формулу в Excel
От: A7exander  
Дата: 18.10.05 11:33
Оценка:
формула в ячейку Excel помещается так:
var
  Range, Sheet, Excel, v: Variant;
    
begin
  Excel := CreateOleObject('Excel.Application');
  Sheet := Excel.Workbooks[1].Sheets[1];
  Sheet.Cells[i, j] := '=(2+2)';                    // занесение формулы
  Sheet.Cells[i, j] := '=СУММ(A1:A8)';        // занесение формулы
  Excel.Visible := true;
end;


вопрос в том, как заставить Excel ее вычислить, потому как вместо результата в ячейке светится #ИМЯ? и подсказка "формула содержит нераспознанный текст" и если после этого установить курсор на строку с форулой и просто нажать Enter то формула прекрасно вычисляется... Как сделать то же самое программным методом?
причем строка "=(2+2)" вычисляется нормально.
насколько я понял распознать оно не может слово "СУММ".
также пытался делать нечто вроде
  Sheet.Cells[y, i].Calculate;

но это ничего не меняет...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: передать формулу в Excel
От: Horror_Infinity Россия  
Дата: 18.10.05 12:07
Оценка:
Здравствуйте, A7exander, Вы писали:

A>формула в ячейку Excel помещается так:

A>
A>var
A>  Range, Sheet, Excel, v: Variant;
    
A>begin
A>  Excel := CreateOleObject('Excel.Application');
A>  Sheet := Excel.Workbooks[1].Sheets[1];
A>  Sheet.Cells[i, j] := '=(2+2)';                    // занесение формулы
A>  Sheet.Cells[i, j] := '=СУММ(A1:A8)';        // занесение формулы
A>  Excel.Visible := true;
A>end;    
A>


A> вопрос в том, как заставить Excel ее вычислить, потому как вместо результата в ячейке светится #ИМЯ? и подсказка "формула содержит нераспознанный текст" и если после этого установить курсор на строку с форулой и просто нажать Enter то формула прекрасно вычисляется... Как сделать то же самое программным методом?

A> причем строка "=(2+2)" вычисляется нормально.
A> насколько я понял распознать оно не может слово "СУММ".
A> также пытался делать нечто вроде
A>
A>  Sheet.Cells[y, i].Calculate;    
A>

A>но это ничего не меняет...

Правильно будет написать вот так:
Sheet.Cells[i, j] := '=SUMM(A1:A8)';        // занесение формулы

Имена формул надо писать по-английски. И будет тебе счастье. Причем, неважно — русский или аглицкий ексель у тебя стоит.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: передать формулу в Excel
От: Danchik Украина  
Дата: 18.10.05 12:13
Оценка:
Здравствуйте, A7exander, Вы писали:

Попробуй написать так:
Sheet.Cells[i, j].Formula := '=SUMM(A1:A8)';        // занесение формулы
Re[2]: передать формулу в Excel
От: A7exander  
Дата: 18.10.05 12:34
Оценка:
Здравствуйте, Horror_Infinity, Вы писали:

H_I>Правильно будет написать вот так:

H_I>
H_I>Sheet.Cells[i, j] := '=SUMM(A1:A8)';        // занесение формулы
H_I>

H_I>Имена формул надо писать по-английски. И будет тебе счастье. Причем, неважно — русский или аглицкий ексель у тебя стоит.

Спасибо за отклик, попробовал, но в результате тот же "#ИМЯ?" вместо результата, та же подсказка, но вдобавок теперь если установить курсор на строку с формулой в ячейке и нажать Enter то ничего не меняется, тоесть похоже "SUMM" эксель не понимает впринципе... Может где то переключить что нибудь нужно, чтоб англоязычные функции понимал? Эксель из пакета "OFFICE 2003"
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: передать формулу в Excel
От: A7exander  
Дата: 18.10.05 12:41
Оценка:
Здравствуйте, Danchik, Вы писали:

D>Попробуй написать так:

D>
D>Sheet.Cells[i, j].Formula := '=SUMM(A1:A8)';        // занесение формулы
D>


Как я уже отвечал Horror_Infinity, применение "SUMM" ничего не дает, и Excel понимает только "СУММА"... Применение ".Formula" к сожалению таже ничего не меняет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: передать формулу в Excel
От: Horror_Infinity Россия  
Дата: 18.10.05 12:51
Оценка:
Здравствуйте, A7exander, Вы писали:

H_I>>
H_I>>Sheet.Cells[i, j] := '=SUMM(A1:A8)';        // занесение формулы
H_I>>

A>Спасибо за отклик, попробовал, но в результате тот же "#ИМЯ?" вместо результата, та же подсказка, но вдобавок теперь если установить курсор на строку с формулой в ячейке и нажать Enter то ничего не меняется, тоесть похоже "SUMM" эксель не понимает впринципе... Может где то переключить что нибудь нужно, чтоб англоязычные функции понимал? Эксель из пакета "OFFICE 2003"

Сорри за опечатку!
Конечно же, надо написать вот так:
Sheet.Cells[i, j] := '=SUM(A1:A8)';        // занесение формулы


З.Ы. На будущее. Очень легко подсмотреть, как правильно писать формулы: Включаешь запись макроса в Екселе, пишешь нужную тебе формулу, останавливаешь запись, идешь в редактор макросов и смотришь, как надо тебе в дельфе написать, чтоб все работало.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: передать формулу в Excel
От: Dimonka Верблюд  
Дата: 18.10.05 12:59
Оценка:
Тут отвечали на похожий вопрос:
http://rsdn.ru/Forum/?mid=1353352&amp;flat=0
Автор: wildwind
Дата: 30.08.05
Re[4]: передать формулу в Excel
От: A7exander  
Дата: 18.10.05 13:17
Оценка:
Здравствуйте, Horror_Infinity, Вы писали:

H_I>Сорри за опечатку!

H_I>Конечно же, надо написать вот так:
H_I>
H_I>Sheet.Cells[i, j] := '=SUM(A1:A8)';        // занесение формулы
H_I>


H_I>З.Ы. На будущее. Очень легко подсмотреть, как правильно писать формулы: Включаешь запись макроса в Екселе, пишешь нужную тебе формулу, останавливаешь запись, идешь в редактор макросов и смотришь, как надо тебе в дельфе написать, чтоб все работало.


Спасибо, SUM сработало, причем если SUM набирать в формуле вручную то Excel ее не понимает, что меня и сбило с толку, однако при программном занесении в ячейку конвертирует в "СУММ" и нормально вычисляет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: передать формулу в Excel
От: A7exander  
Дата: 18.10.05 13:17
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>Тут отвечали на похожий вопрос:

D>http://rsdn.ru/Forum/?mid=1353352&amp;flat=0
Автор: wildwind
Дата: 30.08.05


Спасибо, применение "SUM" помогло
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: передать формулу в Excel
От: NRiS Россия  
Дата: 18.10.05 17:14
Оценка:
что бы эксель понимал формулы с кирилическими символами вроде СУММ нодо писать так


Sheet.Cells[i, j].FormulaLocal := '=СУММ(A1:A8)'
ICQ 349086699
Re[4]: передать формулу в Excel
От: Horror_Infinity Россия  
Дата: 19.10.05 04:40
Оценка:
Здравствуйте, NRiS, Вы писали:

NRS>что бы эксель понимал формулы с кирилическими символами вроде СУММ нодо писать так



NRS>
NRS>Sheet.Cells[i, j].FormulaLocal := '=СУММ(A1:A8)'
NRS>


Тогда английский ексель перестает понимать такие формулы. Как быть? У меня (да и не только у меня) стоит именно оригинальная английская версия.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.