| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: ActiveX/СОМ/CORBA > Excel вставка объекта из файла |
| Автор: FURANIUM 16.9.2010, 14:23 | ||
| День добрый. Суть вопроса в следующем, начал готовить на Дельфи отчеты в Эксель. Все замечательно - импорт и экспорт данных с Экселем, форматирование текста, все на уровне, пока не решил включить в отчет объект из файла. Объект как правило схема, схема нарисована либо в Visio, либо в AutoCAD. При решении вопроса поступил следющим образом: записал макрос вставки из файла в Экселе, посмотрел как устроен, решил адаптировать его под Дельфи и сразу возникла проблема, после осуществленной вставки объекта в Эксель в приложении Дельфи постоянно появляется ошибка "Вызов был отклонен", незнаю как решить. Полагаю вопрос решается очень просто, но поверхностное познание материала не позволяет разрешить ситуацию.
Попутно возникли другие вопросы, которые появятся в перспективе с решением основного: 1) Объект вставляется с уже имеющимися некими размерами, как узнать размеры этого объекта длинну и ширину? 2) Как установить произвольный размер по ширине/высоте, с пропорциональным произвольным размером по высоте/ширине?(схему небходимо разместить в ограниченных рамках, по высоте или ширине) |
| Автор: aleksh 16.9.2010, 17:39 |
| убрать ошибку о вызове можно двумя способами 1: запускать программу при закрытом екселе 2: в строчке добавления картинки убрать ".Select", почему так - не знаю, может некий конфликт контролов или нечто в этом роде Добавлено через 6 минут и 51 секунду и вот http://forum.vingrad.ru/index.php?showtopic=84634&view=findpost&p=650732, там, наверняка, ответы на все связные вопросы |
| Автор: FURANIUM 17.9.2010, 12:32 | ||
aleksh, спасибо. 1) Можно подробнее об этом способе? 2) Убирание ".Select" действительно устраняет ошибку "Вызов был отклонен", но дальнейшая попытка обрадится к объекту снова приводит к ее появлению. Ссылку посмотрел, много интересного, но как применить в данном случае информацию не додумал. Может есть еще идеи у кого нибудь? |
| Автор: aleksh 17.9.2010, 13:07 |
1 как подробней? если выполнять код с .select когда нет открытых xls файлов, то открывается ексель, в него вставляется картинка и она "выбрана" 2 а как обращаешься? к объекту можно обращаться после вставки и изменять его размеры |
| Автор: FURANIUM 17.9.2010, 13:38 | ||
1) Первый способ не подойдет, т.к. объект всавляется в шаблон 2) После просмотра макроса в Excel, пробовал обращаться как VExcel.ActiveSheet.Shape('Object 1').Select; |
| Автор: aleksh 17.9.2010, 14:45 |
а зачем тогда |
| Автор: FURANIUM 17.9.2010, 15:06 | ||||
Видимо я тут немножко не в теме, не совсем пойму. Но всеравно спасибо. И выяснилось замена Link:=True на Link:=False
Избавляет от ошибки при добавлении объекта, но не избавляет от ее появления в дальнейшем Вобщем посоветовали мне использовать ранее связывание, и все получилось. Проблема, как понял, была в различных подходах к решению задачи, и мной был выбран не совсем верный способ. |