excel图表生成(ole)的问题?(转换宏代码) (200分)

L

lybdata

Unregistered / Unconfirmed
GUEST, unregistred user!
下面是我写的一个生成图表的程序的一部分,基本上可以实现,但存在一些问题。
var
Excel: Variant;
WorkBook: Variant;
WorkSheet: Variant;
ChartObject: Variant;
Axis: Variant;
begin
Excel :=CreateOleObject('Excel.Application');
WorkBook := Excel.Workbooks.Open(FileName :=
'd:/Book1.xls');
WorkSheet := Excel.Sheets.item['Sheet2'];
Excel.Visible := true;
ChartObject := WorkSheet.ChartObjects.Add(100, 100, 200, 200);
ChartObject.Chart.ChartType := $41;
ChartObject.Chart.SetSourceData(WorkSheet.Range['A1:E2']);
1如何重复调用,而不发生错误。(已经解决)
2如何可以指定其它sheet中的数据为chart的数据源,如本例:在sheet2中建立一个chart,要指定sheet1的内容为数据源(已经解决)
3宏代码转换,宏代码如下:
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Values = "=Sheet1!R1C2:R5C2"
ActiveChart.SeriesCollection(1).Name = "=Sheet1!R1C1:R5C1"
4宏代码转换
ActiveSheet.Shapes("图表 1").IncrementLeft -228.75
ActiveSheet.Shapes("图表 1").IncrementTop -161.25
ActiveChart.PlotArea.Select
Selection.ClearFormats
ActiveSheet.Shapes("图表 1").ScaleWidth 0.47, msoFalse, msoScaleFromTopLeft
ActiveSheet.Shapes("图表 1").ScaleHeight 0.44, msoFalse,
 
请问老兄:为什麽我的
“ChartObject := WorkSheet.ChartObjects.Add(100, 100, 200, 200);”不好使,编译通不过。
 
1 要重复调用不出错:excel.quit,其实不关闭,再打开时只是文档只读。
2 ChartObject.Chart.SetSourceData(WorkBook.Sheets.item['Sheet1'].Range['A1:E2']);
3 这样做比较好:
ChartObject.chart.SeriesCollection.NewSeries;
ChartObject.chart.SeriesCollection(1).Values := '=Sheet1!R1C2:R5C2';
ChartObject.chart.SeriesCollection(1).Name := '=Sheet1!R1C1:R5C1' ;
4 msoFalse, msoScaleFromTopLeft这些参数的值可以用“对象查看器”查看,
或在Excel 的脚本中执行 MsgBox(msoScaleFromTopLeft)来获得。
 
接受答案了.
 
是什么意思!!!!!!!!!!!!!!!1
 
to jsxjd
以下什么意思?
 
不是把分给你了么?
 
你给谁了?
 
我也不知道为什么,我去问一下网管,让他帮助解决一下,不好意思了,但这不是我的错啊,
 
顶部