hirax.net::Keywords::「OLE」のブログ



2009-08-03[n年前へ]

エクセル2007で綺麗なグラフ動画を作る 

 Microsoft Excel 2007 を使うと、割に綺麗な色のグラフ(チャート)を作ることができる。少しカスタマイズすれば、こんな具合に科学技術プレゼン用のグラフができあがる。

 綺麗なグラフを簡単に作ることができるのなら、今度はその綺麗なグラフを動画で眺める「綺麗なグラフ動画(チャート)」を作ってみたくなった。そこで、まずは、次のようなRubyスクリプトで「グラフ(チャート)を回転させたようすを写した連番JPEG静止画像群」を作ってみた。

excel=WIN32OLE.new("excel.application")
・・・
excelchart=excel.Charts.Add()
・・・
i=1000
0.step(359,3) do |rot|
  excelchart.rotation=rot  
  excelchart.Export( 'c:\\images\\'+i.to_s+'.jpg', 'JPG');
  sleep(0.05)
  i+=1
end

 そして、JPG to AVIを使い、JPEG画像群をAVI動画ファイルに変換した。それが、下の動画である。ひと昔前、いや、ふた昔前なら高価な専用ソフトが生成するような動画を簡単に作ることができることを意識すると、少し不思議な気分になる。

2009-08-04[n年前へ]

エクセル2007で綺麗なグラフ動画を作る 円グラフ編 

 「エクセル2007で綺麗なグラフ動画を作る」の続きとして、今日はMicrosoft Office Excel 2007 で「円グラフ」の動画を作り・眺めてみました。

 円グラフを回転させると、てっきり「コインを立てて回転させたような感じ」のグラフになるかと思いきや、レコード盤が回転するような具合で(レコード盤が回転するようにでは理解しにくい世代には、CDやDVDが回転するようになら伝わるでしょうか)グラフが回ったのが意外に感じられました。

 円グラフの回転方向は意外でしたが、それはそれで面白いように思われます。たとえば、「懸賞」や「くじ」などをする際に、その懸賞のようすをアニメーションで表現するような「動画の素材」としても面白く使えそうな気がします。こんなエクセル2007で綺麗なグラフ動画を作る」の続きとして、今日はMicrosoft Office Excel 2007で作った円グラフ動画を眺めれば、人それぞれ「色んなアイデア・活用法」が浮かんでくるのではないでしょうか。

2010-06-21[n年前へ]

RubyでExcelの複数のグラフをグルグル回すには? 

RubyでExcelの複数のグラフをグルグル回したければ、たとえばこんなコードを書くことになります。適当にExcelでグラフを作りさえすれば、それらのグラフを同じように一括してグルグル回すことができます。ここに挙げた"Rotation"と、あとは、"Elevation"を操作してやりさえすれば、色々な眺め方ができると思います。

require 'win32ole'

excel=WIN32OLE.connect("Excel.Application")
30.step(180,5) do |rot|
  excel.ActiveSheet.ChartObjects.each do |chartObject|
   chartObject.Chart.Rotation=rot  
  end
  sleep(0.05)
end

2010-06-22[n年前へ]

C++で(開いている)エクセルのチャートをグリグリ動かしてみよう!? 

 昨日は、RubyでWin32Oleを使いMicrosoft Excelのチャートを操作するコードを書いたので、今日はC++(Borland C++ Builder)でExcelの三次元チャートをグリグリ動かすためのコードを書いたときのエッセンスをここに書き写してみることにします。こういったコードは書き方を一回眺めれば、あとは比較的簡単に書くことができたりするものですから、ここにメモしておくことにします。下の例は、すでに開かれているエクセルのワークシート上にあるチャートに対して処理をする場合のものになります。

#include <Comobj.hpp>

Varient excel=GetActiveOleObject(
    "Excel.Application");
Varient sheet=excel.OlePropertyGet(
    "ActiveSheet");
Varient chart=sheet.OlePropertyGet(
   "ChartObjects",1).OlePropertyGet(
   "Chart");
int rotation=chart.OlePropertyGet(
   "Rotation");
int elevation=chart.OlePropertyGet(
   "Elevation");
chart.OlePropertySet(
   "Rotation",rotation)
chart.OlePropertySet(
   "Elevation",elevation);
excel=Unassigned;

2010-07-02[n年前へ]

エクセル2003(以前のバージョンも?)のグラフを綺麗にするアプリを作りました。 

 (既存のアドインやカスタマイズ方法の自由度や品質に満足できなかったので)Windows版 Excel 2003(以前のバージョンも?)のグラフを綺麗にするアプリを作ってみました。VBAを使えばもっと簡単に書けるのだろうなぁ、と思いつつC++で組んでしまいました。動作の仕組みは、エクセルのブックが保持しているカラーパレットの空き領域に対して、チャートで使う色を(それぞれのインデックスに対して)割り当てて、チャートの各領域の色にインデックスカラーを指定する、という具合です。そのような動作なので、近似色が使われることによる不自然さなどが生じることはありません。とても滑らかな綺麗なチャートを、Excelで一瞬で作り上げることができます。

 作ってみたアルファ版を、ここ(ExcelColorChanger2003.zip)に置いておきます。(Excel 2007,2010では動かないと思いますが、)もしも、Excel 2000などで動くことを確認した方がいらっしゃいましたら、教えて頂ければ幸いです。ソースコードなどは、いずれ公開する予定です。



 このアプリケーションを使うと、開かれているエクセルの中のチャート(複数のチャートがあれば、一番最初に作成したもの)を、等高面グラフや濃度グラフを、スペクトルカラー風にしてみたり、炎風の色表現にしてみたり、青→赤の色表現にしてみたり、と色々なことができます。…あるいは、Bitmapファイルを適当に作ってやれば、左端がグラフ中の下端の色として扱われ、一番右端の色が上端の色として使われたグラフに変えることができます。つまり、自由自在にチャートの色を簡単にカスタマイズすることができます。しかも、縦軸の最大・最小・分割幅なども設定することができるようになっています。

そのサンプル画面が下になります。上段の3つが、このアプリケーションが標準で備えているグラデーションパターンで、左下がExcelの標準そのままで作ったものになります。ちなみに、右下が、今回作ったアプリケーションです。

 ちなみに、今回作成したアプリケーションでは、チャートの縦軸分割数が24個以上あるものに関しては、24個までしか処理を行わないようになっています。Excel2003, 2007向けバージョンについては、今夜にでも、また別途作ってみようと考えています。

 綺麗な(チャート向け)グラデーション用画像を作成した方がいらっしゃれば、送付して頂ければ幸いです。また、何か追加機能などありましたら、教えて頂ければうれしく思います。

エクセル2003(以前のバージョンも?)のグラフを綺麗にするアプリを作りました。エクセル2003(以前のバージョンも?)のグラフを綺麗にするアプリを作りました。








■Powered by yagm.net