Диаграмма в Excel через OLE
От: Бондаренко Николай Россия  
Дата: 25.09.02 02:16
Оценка:
Хочу из своей программы построить диаграмму в Excel. Кто знает — там нужно задать диапазон для значений(по оси Y) и диапазон для подписей (по оси X). Проблема в том, что если для задания диапазона значений существует метод SetSourceData то для задания диапазона подписей нужно просто присваивать значение свойству XValues. Вот при этом то присвоении и появляется ошибка "Неудалось установить свойство XValues." Хотя в хелпе по Excel VBA оно обозначаетя как Read/Write, да и в макросе оно без проблем присваивается.
Как мне задать диапазон подписей программно?
Вот кусок кода на Delphi


var
 Excel: OLEVariant;
begin
 try
   Excel := GetActiveOleObject('Excel.Application');
 except
   Excel := CreateOleObject('Excel.Application');
 end;
 Excel.Workbooks.Open(RptPath+'Report.xls');

 Excel.ActiveWorkBook.Charts.Add;
 Excel.ActiveWorkBook.ActiveChart.ChartType := xlLine;
 Excel.ActiveWorkBook.ActiveChart.SetSourceData(Excel.ActiveWorkBook.Sheets['Sheet1'].Range['A1:A31'],xlColumns);

//вот оригинал из макроса
//ActiveChart.SeriesCollection(1).XValues = "=Sheet1!R1C2:R31C2"

//значит вот так должно быть, тем не менее - ошибка при исполнении
Excel.ActiveWorkBook.ActiveChart.SeriesCollection[1].XValues := 'Sheet1!R1C2:R31C2';

//пробовал еще вот так  - тоже не выходит
//Excel.ActiveWorkBook.ActiveChart.SeriesCollection(1).XValues := 'Sheet1!R1C2:R31C2';
//пробовал еще вот так  - тоже не выходит
//Excel.ActiveWorkBook.ActiveChart.SeriesCollection[1].XValues := 
//Excel.ActiveWorkBook.Sheets['Sheet1'].Range['B1:B31'];
//пробовал еще вот так  - тоже не выходит
//Excel.ActiveWorkBook.ActiveChart.SeriesCollection(1).XValues := 
//Excel.ActiveWorkBook.Sheets['Sheet1'].Range['B1:B31'];



--------------------------------------------------------------------------------
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.