Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / В открытом Excel взять указатель на диаграмму?(visual c++) / 4 сообщений из 4, страница 1 из 1
09.04.2007, 08:35:55
    #34446299
guestneon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В открытом Excel взять указатель на диаграмму?(visual c++)
Делаю следующим образом:

запускаю эксель, создаю книгу, Sheet - все отображается...

Код: plaintext
1.
2.
3.
4.
5.
6.
Excel::_ApplicationPtr pXL;
pXL.CreateInstance(L"Excel.Application");
pXL->Visible[ 0 ] = VARIANT_TRUE;
WorkbooksPtr pBooks = pXL->Workbooks;
_WorkbookPtr pBook  = pBooks->Add((long)xlWorksheet);
_WorksheetPtr pSheet = pXL->ActiveSheet;
pSheet->Name = "Sheet1";

далее создаю диаграмму(можно и ручками в excel разницы нет):

Код: plaintext
1.
2.
3.
4.
5.
_ChartPtr chartptr = pXL->Charts->Add();
chartptr->ChartType = xlLineMarkers;
chartptr->Name = "chart1";
chartptr->SetSourceData(pSheet->Range["A1:A15"],xlColumns);
//после следующей строки указатель на диаграмму меняется, т.к. я привязываю его к Sheet
chartptr->Location(xlLocationAsObject,"Sheet1");

диаграмма отображается, chartptr становится бесполезным... дальше хочу взять заново её указатель...
но видимо где-то жестко туплю... потому что никак не получается его получить...

//вот такой КОд работает когда Chart не принадлежит Sheet, т.е. если диаграмма создана на отдельной странице
_ChartPtr chp = pBook->Charts->Item["chart1"];

как получить указатель на диаграмму, если она расположена на Sheet1???
можно через ActiveChart, но этот метод не подходит... диаграмма может быть и неактивной...
...
Рейтинг: 0 / 0
09.04.2007, 12:11:25
    #34446938
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В открытом Excel взять указатель на диаграмму?(visual c++)
Код: plaintext
chartptr = pXL->ActiveSheet->ChartObjects(pXL->ActiveSheet->ChartObjects->Count);
...
Рейтинг: 0 / 0
09.04.2007, 14:31:05
    #34447436
guestneon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В открытом Excel взять указатель на диаграмму?(visual c++)
Код: plaintext
ActiveSheet->ChartObjects

такой вызов не прокатит... компилятор не пропустит: нету у ActiveSheet метода CharObjects!...
а вот так, почему то можно:
Код: plaintext
1.
_WorksheetPtr wp = pXL->ActiveSheet;
chartptr_ = wp->ChartObjects( 1 );

а вот дальше проблемы потому что у ChartObjects нету метода Сount, нету метода Chart...
через него вообще ничего не достать, хотя в help по Excel написано для VBA так:
Код: plaintext
Worksheets("Sheet1").ChartObjects( 1 ).Chart
но как это сделать на Visual c?

даже если на VBA предоставлены все эти методы, то на "C" приходится догадываться как вытащить нужные объекты...

собственно вопрос остается ... как достать указатель на диаграмму привязанную к Sheet???...
...
Рейтинг: 0 / 0
11.05.2007, 07:39:34
    #34517938
guestneon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В открытом Excel взять указатель на диаграмму?(visual c++)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Excel::_ChartPtr test, act;
Excel::ChartObjectPtr chp;
Excel::ChartObjectsPtr zzz;

zzz = pSheet->ChartObjects();
		
		if((zzz->Count)> 0 )
		{							
		   chp = zzz->Item(zzz->Count);
                        //chp = pSheet->ChartObjects( 1 );//без разницы...
                        test = chp->Chart;
                        chp->Activate();
                        act = pBook->ActiveChart;
                          }
вроде бы все уже хорошо, но почему когда я беру наконец таки указатель на саму диаграмму - он не работает? т.е. то что записано после этого кода в test - не пустое, но в то же время при любом обращении к его свойствам вылетает ошибка.
К тому же указатель act и указатель test - разные...

кто может объяснить: " ChartObjects(1)->Chart " действительно возвращает объект диаграмму?
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / В открытом Excel взять указатель на диаграмму?(visual c++) / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]