![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как вставить формул в эксель?
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;