Excel のマクロを Python で書く。

みむらです。IronPython ってのがあるので、ちょちょいと。

仕組みとしては、Visual Studio の VSTO (Visual Studio Tools for Office) を使って、
Office 向けのアドインを作って、その中で IronPython を動かそうーってこと。

359870206

結果としてはこんな感じ!

とりあえず、VSTO の書き方とかは割愛して。

ソースはここに:
https://github.com/mimura1133/mm_Python_for_Excel

using Microsoft.Scripting.Hosting;
using IronPython.Hosting;

namespace ExcelAddIn1
{
    public partial class ThisAddIn
    {
        public static string Code = "";

        static ScriptEngine _python;
        static ScriptScope _python_scope;

        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            _python = Python.CreateEngine();
            _python_scope = _python.CreateScope();
            _python_scope.SetVariable("Application", Application);
            _python_scope.SetVariable("Function", Application.WorksheetFunction);
            _python_scope.SetVariable("Cells", Application.Cells);
        }

        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
        }

        public static void Run()
        {
            var cc =_python.CreateScriptSourceFromString(Code);
            cc.Execute(_python_scope);
        }

        #region VSTO generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InternalStartup()
        {
            this.Startup += new System.EventHandler(ThisAddIn_Startup);
            this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
        }

        #endregion
    }
}

メインソースはこんな感じ!

Python.CreateEngine() で、 Python のエンジン作って、

Scope に対して、 SetVariable を使って、参照をがしがし。( python で言うところの、 import )

あと、どこかから Run が実行されたらコンパイルして実行する仕掛け。

動作例ですと、「Run」 ボタンですね。

これ使った場合、 Function 以下に、Excel の関数が存在していて、

Cells 以下に、各セル情報が入っているので、キー入力を捕まえてくれば、Python によるマクロも可能かも。

制作時間30分だから、とっても汚くて、実装がふざけた感じになっているけど、許してね。

Aero Basic と Aero Glass の切り替え。

みむらです。

結構 Windows 7 になって、コントロールパネルをさまよう人が多くなった気が。
とりあえず、マウスでかちかちっとやる人と、一括でやるパターン2つと3種類書いておきます。

余談ですが、私は Aero Glass 好きだったりします。

アニメーション切ると、タスクバーのプレビューを始めとする Windows 7 の機能や、見た目を保持したまま、
非常にきびきびとした動作になります。

もし宜しければぜひ: Windows Aero のアニメーションを切って高速に。


手でやるやり方その1

image

デスクトップ上で右クリックをして、「個人設定」を開く。

image

開いた画面の下の方の、「ベーシックテーマとハイコントラストテーマ」の中に、
「Windows 7 ベーシック」などがあるので、それをクリック。

なお、Aero Glass に戻す際は、同様にして、「Aeroテーマ」の中にあるテーマをクリックすれば戻ります。


手でやるやり方その2 (要:管理者権限)

上記の物とは違い、純粋に Aero だけを切ります。

image

スタートメニュー内の「コンピュータ」を右クリック –> プロパティ

image

システムの詳細設定を開く。

image

詳細設定タブのパフォーマンスの「設定」をクリック。

image

開いた中の、
「デスクトップコンポジションを有効にする」のチェックを外すと、 Aero Glass が取れて、
「ウィンドウとボタンに視覚スタイルを使用する」のチェックを外すと、クラッシック表示になります。


一気にやる方法

単純に、手でやる方法の2をバッチファイルでやるだけです。
管理者権限は不要です。

Aero Basic にする:
http://mimumimu.net/software/blogup/visual_aero_basic.bat

Aero Glass にする:
http://mimumimu.net/software/blogup/visual_aero_glass.bat

ではでは。

Windows Aero のアニメーションを切って高速に。

どうも。みむらです。

Windows って使ってて、遅いなーとか思ってしまうんですが、
そのものが重いんじゃなくて、視覚効果で重さを感じ取っているということが考えられます。

確かに、アニメーションがあった方が楽しいです。視覚上は。
でもそのコンピュータで何をやるんだろうと考えたとき、作業が圧倒的に早く終わった方がありがたいわけです。

作業中は只でさえイライラすることが多いです。知らず知らずのうちに。
あなたが待ち合わせで、相手を待っているとき、
同じ時間に遅れて来るにしても、歩いて来るのと、走ってくるのでは、後者の方が圧倒的に印象が良いですよね。
前者はやる気が感じられない。これと一緒。

閑話休題

というわけで、遅く感じさせるアニメーション効果をすべて落とすバッチファイルを用意しました。
対象は、Windows Aero を使っているユーザ。

中身は、
image

パフォーマンスオプションの設定をいじくりまわすだけ。


1.ダウンロード

http://mimumimu.net/software/blogup/visual_aero_fast.bat

上記URLを右クリック し、 「対象をファイルを保存」 を選び、デスクトップに保存します。
(mime を見てくれるブラウザでは、自動的にダウンロード画面に移行してくれると思います。)

2.作業中のファイルを保存し、アプリケーションを閉じる。

3.ダウンロードしたファイルを実行

image

このようなファイルが保存されますので、ダブルクリック。

4.勝手にログオフするので、ログインし直す。

アニメーション効果がすべて切れるので、最初は不思議な感じになりますが、
すぐに慣れます。


ただこれになれると、普通のアニメーション効果ONの状態のWindows が、
なかなかにとろっとろしたシステムに見えてきます。

多分、XPまでのユーザが、Windows 7 や Vista に移行して、遅い! と言うのは、
ハードウェアスペックの問題もありますが、こういう細かいところで、とろっとろした感じを出したのが、
どうも宜しくないんじゃないのか、と予想しています。

きびきびした Windows で作業したい方は、上記のバッチを使って、設定変更してみてはいかがでしょうか。
設定を変えると、案外 Aero Glass も高速に見えてきますよ。

github によるソースコード開示。

みむらです。

制作したソフトウェアは、私が作成した物に関してはすべてソースコードは公開可能なものとして、
以前から要求があった際にはいつでも開示していました。

ただ、github を始めとする、ソースコードを共有するためのツールが近年発展しているのを受け、
こちらでも github を活用したソースコード開示を行う事としました。

ただし、特に昔制作したソフトウェアに関して、2バイト文字をファイル名として利用しているケース、
また、内部に公開出来ない部分が含まれている場合(ライセンス、ソースコードが汚すぎる場合など)に関しては、
公には開示せず、今まで通りの方法を採ることとしました。

随時公開可能となった物に関しては、公開予定でいますが、
別途連絡を頂ければ、いつでも公開可能です。

github : https://github.com/mimura1133/

ではでは。

京都旅行 && ICTスクール同窓会 向かう車中にて。

WP_000013

大きな雲である。

雲は全速力で駆け抜けようとする新幹線にひっそりと寄り添い、
こちらを見つめてくる。

そしてその大きな姿を持って私を包み込もうとする。

時代は急速に進化を遂げ、様々な物が古いと言われ、そして皆は新しい概念に飛びつこうとする。
まるで私が今乗っている新幹線、現代の進化というものはまさにそんなものじゃないのだろうか。

WP_000011

時代は常に諸行無常である。
常に変化し形ある物は何れ崩れる。

そして、時代は常に繰り返される。

どんなに急速に時代が変わろうとも、
どんなに世界が変わろうとも、

それらはすべて、ちっぽけな一つにすぎない。

時代の変化にもがき苦しむぐらいなら、
自分の興味のある分野を研究し、楽しく技能を伸ばした方が数倍もいいのではないか。

視野を大きく持て。
まだ「時代の変化は激しい」と感じるならば、それはまだ視野が狭いのだ。

そんなことを、ふと外に見えた、偉大な雲を見て感じました。