Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Скопировать с tchart в excel

45K
29 апреля 2009 года
gitzzz
7 / / 28.04.2009
Здравствуйте!
Возникла следующая ситуация:
Рисуется график в tchart'е. Его потом надо скопировать в excel, например не с А1, а d4. И все остальные графики следом за ним. Как определить ячейку с которой начнется график записываться? Размеры графов одинаковые.
247
30 апреля 2009 года
wanja
1.2K / / 03.02.2003
В смысле картинку, или данные?
45K
01 мая 2009 года
gitzzz
7 / / 28.04.2009
Данные(или график), который на картинке. Только еще одна проблема - как вставить в excel с определенной ячейки?
Пробовал через CopyToClipboardMetafile(true) но:
1) Вставлять придется вручную
2) Вставить надо в определенное место в excel
294
02 мая 2009 года
Plisteron
982 / / 29.08.2003
Цитата: gitzzz
1) Вставлять придется вручную

Можно посредством Ole Automation дать Excel команду, например, ActiveSheet.Paste

Цитата: gitzzz
2) Вставить надо в определенное место в excel

Потом даём команды типа ActiveSheet.Shapes("Диагр. 1").Left = 160 и ActiveSheet.Shapes("Диагр. 1").Top = 120

45K
02 мая 2009 года
gitzzz
7 / / 28.04.2009
Попробовал так. Почти получилось. Выдается ошибка (см. рис.) - Не знает что такое ShapeRange. Либо инклуд какой-н. не включил, либо что то еще. Подскажите в чем проблема.
А вобще хочу сделать так, чтобы вставлялся большой рисунок по размеру и потом сжимать его на месте. Потому что если делать на tcharte маленький, некрасиво получается.
Вот код:

try
{
//iStartExcel - ф-я открытия дока
if(iStartExcel("C:\\1.xls")) return;
vVarSheet.OlePropertyGet("Shapes").OleFunction("AddPicture",
"c:\\1.bmp",false,true,vVarSheet.OlePropertyGet
("Range","A5").OlePropertyGet("Left"),
vVarSheet.OlePropertyGet("Range","A5").OlePropertyGet("Top"),-1,-1);
vVarSheet.OlePropertyGet("Pictures","Picture 1");
Variant v=vVarApp.OlePropertyGet("Selection");
v.OlePropertyGet("ShapeRange").OleFunction("IncrementLeft",-177.75);
// v.OlePropertyGet("ShapeRange").OleFunction("IncrementTop",100);
// v.OlePropertyGet("ShapeRange").OleFunction("IncrementRotation",-90);
}catch(...)
{
}
iStopExcel(1,"C:\\1.xls");
Close();
294
02 мая 2009 года
Plisteron
982 / / 29.08.2003
 
Код:
Variant vVarShape = vVarSheet.OlePropertyGet("Shapes").OleFunction("AddPicture", "F:\\Pictures\\IMG0079.BMP",false,true,vVarSheet.OlePropertyGet("Range","A5").OlePropertyGet("Left"),vVarSheet.OlePropertyGet("Range","A5").OlePropertyGet("Top"),-1,-1);
    vVarShape.OleFunction("IncrementLeft",177.75);

ps. я бы ввёл временную переменную Variant varA5 = vVarSheet.OlePropertyGet("Range","A5"). Хоть на три миллисекунды -- а быстрее.
45K
02 мая 2009 года
gitzzz
7 / / 28.04.2009
Так все-таки, как можно сжать рисунок? Пробовал через ScaleWidth - ругается, мол "Недопустимое число параметров"

vVarShape.OleFunction("ScaleWidth",50);
294
03 мая 2009 года
Plisteron
982 / / 29.08.2003
Цитата: gitzzz
Так все-таки, как можно сжать рисунок? Пробовал через ScaleWidth - ругается, мол "Недопустимое число параметров"

vVarShape.OleFunction("ScaleWidth",50);


Значит, недопустимое.
http://msdn.microsoft.com/en-us/library/aa167699(office.10).aspx
http://msdn.microsoft.com/en-us/library/aa662163(office.10).aspx
Добавлено: Хинт: В Microsoft Excel работают следующие клавиши и их сочетания: Alt+F11, F1, F2.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог