EmacsでのExcel VBA開発環境を構築

    Excel VBAなどの開発環境は、たいていVisual Basic Editorです。

    しかし、なんでもEmacs上でやらないと病気になってしまう、 もやしな人間たちにとってはEmacsでVBAが書きたいところ。

    というわけで、無謀にもEmacsでVBAの開発がでいないものか、調べてみました。

    [toc]

    visual-basic-mode.el

    visual-basic-mode.elというものを見つけました。

    emacswikiからダウンロードして、ロードパスの通った場所に配置します。init.elにも以下を記述。

     (autoload 'visual-basic-mode "visual-basic-mode" "Visual Basic mode." t)
     (setq auto-mode-alist (append '(("\\.\$latex frm\\|bas\\|cls\$$" .
                                     visual-basic-mode)) auto-mode-alist))
    

    VBAのファイルがハイライト表示される。

    text-scripting-vba

    Excel VBAのコードのインポート・アウトポートを簡単にできる。そうすると、

    • ViやEmacsでコードがかける
    • バージョン管理ができる
    • TDDでコーディングができる

    と、いろいろなメリットがある。

    本サイトは、以下。

    使い方

    xlsm拡張子のExcelデータを新規作成。test.xlsm

    開発タブからVBE起動(Alt+F11でも)。 開発タブはデフォルトで隠されているので、表示されていなければオプションから表示させる。

    ツールバーのファイル -> インポートを選択。 以下から落としてきたThisWorkbook.clsをインポート。

    ちなみに、文字コードがUTF-8なので、Shift-Jisに変換したほうがよい。変換方法は以下。

    nkf -s ThisWorkbook.cls > ThisWorkbook_sjis.cls
    

    ExportThisNotebokとReloadModuleのマクロが追加される。

    標準Moduleに追加されるので、その内容をThisWorkBookに切り取り・貼り付けをする。

    コードを書く

    サンプルとしてコンナコードを書く。./src/hello.bas

    Sub Hello()
      MsgBox ("Hello VBA")
    End Sub
    

    libdef.txtを作成。ここに読みこむソースのパスを相対パスで記述。

    ./src/hello.bas
    

    マクロ(F5 or Alt+F8)のReloadModuleを実行すると、 先ほど作成したhello.basが取り込まれる。

    こんなふうにすれば、Emacsで編集して取り込んでテストということが可能。

    VB Lite Unit

    VBAで TDDを実施するためのツールとして、VB Lite Unitがある。

    詳しくは過去記事参照。

    vbasense.el

    vbasenseなるものは、オムニ補間ができるとのこと。Special Thanks.

    el-getからインストールします。init.elにも以下を追加。

    (require 'vbasense)
    

    ;; キーバインド (setq vbasense-popup-help-key “C-:”) (setq vbasense-jump-to-definition-key “C->“)

    ;; 必要に応じて適宜カスタマイズして下さい。以下のS式を評価することで項目についての情報が得られます。 ;; (customize-group “vbasense”)

    ;; 推奨設定を行う (vbasense-config-default)


    M-x vbasense-load-libraryを実行したときに、 [VBASense] Not yet regist TLBINF32.DLLというエラーがでることがある。


    ただし、自分の環境ではどうも動かし方がわかりませんでした。 TLBINF32.DLLの登録方法がわからずに導入は挫折、残念。


    windows7 64bitだと、ダメなのかな?


    C:\Windows\SysWOW64>regsvr32.exe TLBINF32.DLL
    

    vbasense-tli-filesに自分の環境のパスを変更しても、うまくパスをみつけてくれない。 chkTLI.vbsをNop応答にして、だましで少しつかってみる。

    Excelenium

    この記事とはまったく関係ないけれども、このツールがとてもおもしろそうなので、memo。

    ExcelとSeleniumを組合せたもので、Excelのテスト仕様書からSeleniumを実行できる。しかも、OSSとか。