Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как вставить формул в эксель?


Savek ©   (2011-04-08 15:26:00) 

ExcelApp := CreateOleObject('Excel.Application');
 ExcelApp.WorkBooks[1].WorkSheets.Add;

   ExcelApp.Range['B1'].Select;
   ExcelApp.ActiveCell.FormulaR1C1:='=ГИПЕРССЫЛКА(" http://www.сайт.рф/catalog/images/big/.jpg";"ФОТО")';

на последней строке получаю исключение:
First chance exception at $760CB727. Exception class EOleException with message 'OLE error 800A03EC'. Process Knopka.exe (1304)
если из вставляемого текста убрать знак =, вставка проходит без ошибок. т.е. не удаётся вставить именно формулу. Что не нравится экселю? Подскажите как исправить этот участок кода, чтобы можно было вставлять в  формулу?


Amoeba_   (2011-04-09 12:08:00) [1]


> как вставить вариантый массив

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1274


savek   (2011-04-09 11:53:00) [2]

да, действительно правда в [1]
сопутствующий вопрос, а как вставить вариантый массив, содержащий формулы? Сам не могу допереть, проблема та же

ArrayData := VarArrayCreate([1, RowCount, 1, ColCount], varVariant);
...
Cell1 := WorkBook.Sheets[sheet[s]].Cells[BeginRow, BeginCol];
Cell2 := WorkBook.Sheets[sheet[s]].Cells[BeginRow  + RowCount - 1, BeginCol +
ColCount - 1];
Range := WorkBook.Sheets[sheet[s]].Range[Cell1, Cell2];
Range.Value := ArrayData;


sniknik   (2011-04-08 18:45:00) [3]

вот блин, только заметил...  
> ExcelApp.Range['B1'].Select;
> ExcelApp.ActiveCell.FormulaR1C1:='=ГИПЕРССЫЛКА(" http://www.сайт.рф/catalog/images/big/.jpg";"ФОТО")';
это от листа должно быть, а не приложения.

в [1] кстати правильно...


savek   (2011-04-08 16:29:00) [4]


> заменил бы на HYPERLINK ...,

не помогло. всё гораздо хуже: даже "=R1C1" не удаёся вставить
Может можно отключить реакцию экселя на время вставки?
ExcelApp.Application.EnableEvents := false;
не помогает...


sniknik   (2011-04-08 16:06:00) [5]

> ГИПЕРССЫЛКА
заменил бы на HYPERLINK ..., хотя не гарантирую
(в ворде, примерно то же самое,  работает)


И. Павел   (2011-04-08 15:52:00) [6]

Про FormulaR1C1 из msdn:

> Использование этого свойства для элемента управления NamedRange, содержащего несколько ячеек, приведет к возникновению исключения.

Может быть, ошибка возникает именно из-за использования Range.


И. Павел   (2011-04-08 15:44:00) [7]

X.WorkBooks[1].WorkSheets[1].Cells[j, i].formulaLocal:='=ГИПЕРССЫЛКА(" http://www.сайт.рф/catalog/images/big/.jpg";"ФОТО")';//ADOQ.Fields[i-1].AsString;


Наверх

Титульная страница Поиск, карта сайта Написать письмо