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向けバージョンについては、今夜にでも、また別途作ってみようと考えています。
綺麗な(チャート向け)グラデーション用画像を作成した方がいらっしゃれば、送付して頂ければ幸いです。また、何か追加機能などありましたら、教えて頂ければうれしく思います。
2010-07-03[n年前へ]
■エクセル 2010のグラフを綺麗にするRubyスクリプトを作る
先日、エクセル2003のグラフを綺麗にするアプリを作りました。しかし、Excel 2010に対して動かしてみると、どうしてもエラーが出てしまうのです。そこで、今日は、Borland C++ Builder 6.0でコードを書くのは止めて、とりあえず、Rubyでエクセル2010のグラフを綺麗にするスクリプトのスケルトンを書いてみました。その実行結果例が下に張り付けたものになります。透明度も調整できますし、近似色が使われることもなく、なかなか良い感じです。
あとは、このスクリプトに機能追加&EXE化を行った上で、色指定などを行うインターフェースから適当にその実行ファイルを読んでやれば良さそうです。そういった辺りは、また後程してみようと思います。
ちなみに、Rubyスクリプトの主要部(を簡単に示したもの)はこのような具合になります。オブジェクトの親子関係が入り混じっている箇所に、少し惑いました(LegendKey経由になっているのも、そんな戸惑いの影響になります)。
excel=WIN32OLE::connect("Excel.Application") chart=excel.ActiveChart legend=chart.Legend count=legend.LegendEntries.Count count.times do |i| entry=legend.LegendEntries(i+1) fill=entry.LegendKey.Format.Fill fill.ForeColor.RGB=255*i/(count-1)+ 0*256+ 255*(count-1-i)/(count-1)* 256*256 fill.Transparency=TRANSPARENCY fill.Solid end
2010-07-04[n年前へ]
■Excel's color palette explained
エクセルがこれまで使ってきたカラーパレットについてのわかりやすい説明がある「Excel's color palette explained」 (添付されているカラーパレットを整理したエクセルファイルもわかりやすい)
Excel's color palette contains 56 colors, all of which can be accessed and most of which can be replaced using ExcelWriter (v6 or later, .NET or Java). This article will describe the layout of the palette and enumerate the default palette colors.
- 40 Standard colors, which includes 8 system colors
- 8 Chart fill colors
- 8 Chart line colors
■Excel 2010のチャートを綺麗な色で仕上げるアプリ作りました。
というわけで、Excel 2010のチャートを綺麗な色で仕上げるアプリソフトを作ってみました。VBAを使えば簡単な作業でしょうがC++とRubyを使って作ってみました。まずは、GUIラッパーが必要ファイルを作成した上で(RubyスクリプトをEXE化した)コマンドラインアプリケーションを呼び出し、そのコマンドラインアプリケーションがExcel 2010のチャートを操作する、という具合の動き方になっています。作ったアプリケーション ExcelColorChnager2010.exe (および必要ファイル)は、ここにExcelColorChanger2010.zipとして置いておきます。
適当に書いことに加え、Excel 2010 for Windos以外、たとえば、excel 2007で動くのか?といったことは調べていない状態ですが、とりあえず一回手から放してみることにします。
ちなみに、(内部的に使われる)コマンドラインアプリケーションのexcel2010.exeは、
excel2010.exe 0 200 10 0.5などとコマンドラインから実行するなり・呼ぶなりすることで、縦軸最小値・縦軸最大値・縦軸刻み幅・グラフ面の透明度、というようにExcelのアクティブなチャートを設定することができます。
2010-07-12[n年前へ]
■エクセルで楽しく・わかりやすくシミュレーションをしよう!?
基本的には表計算ソフトなら何でも良いのだが、エクセルを使って静電計算を行ったり、非定常3次元伝熱計算をしたりすることができるようになる、という実習講習会を今週する。毎年、夏が始まるこの季節に、そんなシミュレーション実習講習会の手伝いをしている。
だから、夏が始まる前にはいつもエクセルのテクニックを調べたり・関連ツールを作ったりする。…そして、いつもエクセルを少し嫌いになったり・あるいは面白く感じたりする。
「Excel」上で動作する手軽な歴史シミュレーションゲーム「極小三國志」 というものを知った。
「極小三國志 for Excel VBA」(以下、「極小三國志」)は、中国の後漢末を舞台にした簡易的な歴史シミュレーションゲーム。「Microsoft Excel」(以下、「Excel」)2003/2007に対応するフリーソフトで、編集部にてWindows 7上の「Excel 2010」で動作を確認した。作者のWebサイトからダウンロードできる。こちらの方は、VBAで実装されていたり「歴史シミュレーション」だったりする違いはあるが、エクセル上で行う「シミュレーション」であることには同じである。
「極小三國志」は、魏・呉・蜀の三国が覇を争った“三国志”の時代を舞台にした歴史シミュレーションゲームで、「Excel」上で遊べる VBAマクロとして実装されているのが特長。
エクセルを使い、楽しく・わかりやすくシミュレーションをして遊んでいる人・働いている人も多いことだろう。「私はこんな風にエクセルを面白く使っている」という話を聞きたい今日この頃だ。