2011年10月12日水曜日

64ビット版OfficeでURLエンコード処理ができない?に対する返信1

なんか久しぶりに書くので、タイトルからしてブログの使い方を間違えているような気もしますが、他に言いようが無いので。

何言ってるか分からない方は、まずきぬあささんの下記エントリをお読みください。

64ビット環境でのScriptControlの代わり - Office 2007/2010・リボンのカスタマイズ 初心者備忘録
64ビット版OfficeでURLエンコード処理ができない? - Microsoft Officeのリボンのカスタマイズ情報が満載 - 初心者備忘録

というわけで、いきなりまとめに入ります。

64 ビット版の ScriptControl (msscript.ocx) が無いので、ScriptControl 依存コードは 64 ビット Office で使えません。

32 ビット版 Office (含む WOW64 上) ユーザーには関係ない話ですが、時代の流れ的にはいつか我が身な話ではあります。
64 ビット版の ScriptControl のリリース予定が無いことは、2009 年末に MS が明言しており、今年(2011 年)の 1 月にも How Do I Install PowerShell on Windows 7 and Other Questions - Hey, Scripting Guy! Blog - Site Home - TechNet Blogs で「64 ビット版の ScriptControl は存在しない」とダメ押しされています。

現時点で代替方法として出ているのは、今のところこんな感じです。

1. ScriptControl の代わりに HTMLDocument (IE DOM) を利用する
2. VBScript ファイルを作成し、32ビット版の cscript.exe でそのスクリプトを実行
3. 必要なメソッドを追加した WSC を作成して、GetObject で呼び出す

1 と 2 のリンクは前掲のきぬあささんより、3 は月さんのブログです。
要は最終的に JScript のスクリプト エンジンにコードを突っ込めればいいわけで、入り口はどこからでもよいわけです。
あと、ScriptControl 代替という観点から言えば、3 は別に Web に置かなくても、ローカルでも有効な手法です (デプロイの観点から言うと、ローカルかどうかは天地ほど違いますけど)。

以下も参考に挙げておきます。

4. WSH/JScript(64bit)からScriptControlを使えるように32bit版wshを呼び出す | Codetter(こーどったー)β
5. VBAでスクリプトエンジンを直接動かす | にじうら専用ブラウザ 2B 配布場所

4 は、2 と同じ手法に関する定型コード部分の公開です。
5 は自作タイプ ライブラリを使ってスクリプトエンジンを直叩きする方法です。クラシック VB と違って、タイプライブラリもセットでデプロイしないと動かない VBA では実用性に難のある手法ですが、技術的には面白いです。
ちなみにタイプライブラリを自作する環境が無いけど試してみたい方は、この辺を参照

あー、まとめただけで疲れた。

で、ここからが本題。

とりあえず、「64ビット版OfficeでURLエンコード処理」というお題に限れば、他にもバリエーションがあると思うので、後続エントリで興味本位にいくつかつらつら書いていきます。実用的かどうかは、問わないように。

なお承前として「URL エンコード処理ていどは、簡単なんだから自前で組めばいいじゃん」は禁句とします。あくまで外部ライブラリの褌を借りて、自分の手を汚さず (?) 処理させるのが江戸前の粋というもの。呼び出すまでの苦労は問わないのが、ルーブ・ゴールドバーグ主義者 a.k.a. ピタゴラ・プログラマーの真骨頂と言えるのではないでしょうか。

などと訳の分からない予防線を張りつつ、次回へ続く。

1 件のコメント:

  1. いいっすね~。
    久しぶりに聞きました、YU-TANG節。

    返信削除