Хочу из своей программы построить диаграмму в 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'];
--------------------------------------------------------------------------------