IronPython で EXCEL のグラフを自動作成させてみるテスト
Excel 2007 + IronPython 2.0A4 で動作を確認.
# ipy.exe -X:PreferComDispatch -X:TabCompletion import clr from System import Type, Activator t = Type.GetTypeFromProgID('Excel.Application') e = Activator.CreateInstance(t) e.Visible = True w = e.Workbooks.Add() s = w.ActiveSheet s.Cells[1, 1].Value = 'hoge' s.Cells[1, 2].Value = 'value' for y in range(2, 10): s.Cells[y, 1].Value = y s.Cells[y, 2].Value = y * 3 ''' *** VBA Macro の場合 *** Range("A1:B9").Select ActiveSheet.Shapes.AddChart.Select ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$B$9") ActiveChart.ChartType = xlLineMarkers ActiveChart.Location Where:=xlLocationAsNewSheet ''' xlLineMarkers = 65 xlLocationAsNewSheet = 1 xlValue = 2 # xlCategory = 1, xlSeriesAxis = 3 s.Range("A1:B9").Select() s.Shapes.AddChart().Select() a = w.ActiveChart a.SeriesCollection(1).XValues = "=Sheet1!$A$2:$A$9" a.Axes(xlValue).MaximumScaleIsAuto = True a.SetSourceData(e.Range('Sheet1!$B$1:$B$9')) a.ChartType = xlLineMarkers a.Location(xlLocationAsNewSheet)
何故か下記のように途中でエラーが出るけど、とりあえず動くので様子見. IronPython もアルファ版だし...
>>> a.SetSourceData(e.Range('Sheet1!$B$1:$B$9')) Traceback (most recent call last): File , line 0, in ##59 File , line 0, in _stub_##61 SystemError: オブジェクト参照がオブジェクト インスタンスに設定されていません。
追記: IronPython 2.0A5, A6 では全く動かなくなっていましたが、2.0A7 でエラー無しで動くようになりました.