Windows」カテゴリーアーカイブ

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 も高速に見えてきますよ。

Python + pywin32 で COM 叩いてしゃべらせる。

どうもみむらです。
普段は SUA (UNIX 互換環境) 上で叩いているのですが、
今日は堂々と Windows 上で叩いてみます。

PyWin32 ってのをつかって、 COM コントロールを叩いてみます。

とりあえず。COM コントロールとは。

Microsoft社が提唱する、部品化されたプログラムを作成・利用するための基盤となる技術仕様。特定の機能のみを持つプログラム部品を組み合わせることでアプリケーションソフトの開発が容易になる。この仕様に基づいてデータのやりとりができるプログラム部品のことをCOMコンポーネントと呼ぶ。

COMとは【Component Object Model】 – 意味-解説-説明-定義 : IT用語辞典

だそーです! (ぉ

夢のある話をすると、COM コントロールを使うことで、
音声認識や音声合成、各種 Office アプリケーションの制御、その他 COM コンポーネントが提供する機能を
使うことが出来ます。


1.Python の導入

http://www.python.jp/Zope/download/pythoncore
上記URL から、 Python 2.x 系をインストールします。

えーと、Python 3.x 系はいろいろと変わったようで。でも動くのかなぁ。うーん

2.Python for Windows extensions の導入

http://sourceforge.net/projects/pywin32/files/pywin32/
ここから最新ビルド(一覧の 「Build???」 の数字が一番大きい物を選択)のうちの、
上で導入したバージョンと同じ物(無ければ近いバージョン)をインストール。

3.叩く。

ばんばん! ちがいます。
スタートメニューから Python を立ち上げて、

image

このように立ち上げておきます。

続けて、

import win32com.client

とタイプ。

image

今回は音声合成ということで、「Sapi.SpVoice」を使って、

Speak メソッドを叩いてしゃべらせます。

もし今回使う、「Microsoft Speech API」が気になる人は、

http://msdn.microsoft.com/en-us/library/ms723602(v=VS.85).aspx

この辺の資料を参考にして下さい。

speech = win32com.client.Dispatch("Sapi.SpVoice")
speech.Speak("Hello Python World!")

実行しますと、Win7 / Vista 環境では、多分、米国英語のおねいさんが

しゃべってくれると思います。

XP 環境ですと、なんか相当声のしゃくれたおっちゃんがしゃべってくれた気がします。

・・試してないですが。

とりあえずこんな感じでー。

GNU系ツールもばっちり使える、Windows の UNIX 互換環境を試してみる。

最近 UNIX に恋し始めているので、 SUA という Microsoft が公式に提供している UNIX 互換環境を試してみました。

Windows の SUA とはどんなモンなのか、前に少し試したんですが、使いづらいイメージしか無かったので、
手元の環境が Ultimate になったいま、本当にそうなのか試してみたいと思います。

結論から言うと、結構面白い環境。でした。

なお、
SUAを有効にするためには、Windows 7 or Windows Vista の Ultimate が必要です。

ブログでは Windows 7 Ultimate を元に説明します。

image
入れると、Windows 上で Bash を立ち上げて、UNIX コマンドを打って動かしたり、

image
Windows の cmd で提供されているコマンドを叩いて動かすことも出来ます。

勿論 bash ですんで、補完機能やキーボードショートカットはばっちりで、
image
コマンドに対して補完掛けたりとかが可能です。


1.有効にするには。

image
プログラムのアンインストールを選択。

image
Windows の機能の有効化または無効化を選択。

image
UNIXベース アプリケーション用サブシステム を有効にして、「OK」をクリック。

image
スタートメニューを開き、すべてのプログラム内にある、
「UNIXベース アプリケーション用サブシステム」 をクリック。

ウェブサイトが開くので、
「Continue」、「No, I do not want…」を選んで「Continue」を押し、
image
表示されたページから、64bit であれば amd64、32bit であれば x86 版をダウンロードします。

1.5 セットアップ

image Next をクリック

image Add or remove を選択。

image
上の矢印の部分をクリックしてメニューを表示させ、「Entire feature」をクリックし、全部を有効にする。

image Next をクリック

imageNext をクリック

あとは、「Install」を押し、画面に従い完了させます。


2.拡張パックのインストール

今のSUA の状態ですと、純粋な UNIX で、GNU なソフトウェアは一切入っていない状態です。
結構 Linux 使っている方ですと、それが無いととてつもなく使いづらいかとおもいます。

そういえば、
このSUA は Microsoft が開発したものではなくて、Interix 社というところが作ったようで。
Interix 社のウェブサイトに追加パックとして、GNU系のソフトウェアをわんさか入れてくれるソフトが転がってます。

これを入れると、wget や vim といった超基本的な物から、
Python や PHP や Perl や Apache や GCC や、何でもかんでもわんさか入ります。

まさに Windows 上で動く UNIX ってところでしょうか。
cygwin でもいいって声が聞こえてきそうですが、パッケージ管理もあって、自由に削除、追加、アップデートが出来たり、
Microsoft がサポートしているので、OS との関係性も良さそうですし。環境を取り除くのも楽ですし。ってことで。

1.下記ウェブサイトにアクセスします。
SUA Community Microsoft Windows Subsystem for Unix-based Applications, Interix and SFU
(http://www.suacommunity.com/SUA.aspx)

image
ウェブサイト下部にある、「Complete Toolset」をダウンロードします。

なおここでは、64bit 環境の場合は上と下、両方を。
32bit 環境の場合は、上だけダウンロードします。

また、ダウンロード時は、ドライブ直下にファイルを置かないと誤作動の原因となるので、
注意して下さい。

2.コマンドプロンプトを「管理者」として立ち上げて、インストール。
image

image
立ち上がりましたら、

image
対象ドライブの変更を行った後、 cd コマンドを用いて、ドライブ直下のダウンロードされた場所に移動します。

image
(私の場合は Z ドライブにダウンロードしました。)

その後、ファイル名を打って実行させます。
(「pkg」と打って、TAB キーを押して補完させると便利。)

この際、64bit 環境の方は、
「pkg-current-bundlecomplete60x64.exe」を先に実行し、
その後、
「pkg-current-bundlecomplete60.exe」を実行すると良いかと思います。

すべて完了しますと、インストールは完了です。


追記事項。

先ほども述べましたように、これ、パッケージ管理機能が付いてます。
中身はUNIX のエミュレーションですので、
pkg_update や pkg_add などを使います。

搭載コマンドのリファレンスについては、
http://freebsd4-jman.kandk.co.jp/
このあたりを見ておくといいかと思います。

よく使うと思われますが、
「apt-get update; apt-get upgrade」 or 「yum update」と同様のことをするのは、
「pkg_update -a」で実行可能です。

ただ、リポジトリが新しくなっているのか微妙ですが、エミュレーションの面から FreeBSD や NetBSDなどの
リポジトリが使えるんじゃないかとにらんでます。

また、Cコンパイラに関して、
先ほどのパッケージを入れると gcc が入りますが、それ以外にも、
C89_COMPILER やそれに付随する変数を設定すると、
cc コマンドで Visual Studio のコンパイラがコールできるようになります。

gcc が入っているので、なんだかなーとは思いますが、Cは細かく仕様が異なる部分がありますので、
必要な方は是非。