2011年03月18日

vba:JavaScriptのコードを実行させる

ScriptControlオブジェクトを使うとvbaでJavaScriptのコードを実行させることができる。と言っても正確にはJScriptだけど。正規表現のマッチングやjsonデータを扱えるようになるのでいろいろ便利。
※64bit版OfficeだとScriptControlが使えないらしい。(32bit版OfficeならOSが64bitでもOK)

ex.文字列からyyyy/mm/ddを抜き出し、yyyymmddにして返す。

Dim sc As Object
Set sc = CreateObject("ScriptControl")
sc.Language = "JScript"
sc.AddCode "function extractDate(dt) { dt.match(/(\d{4})\/(\d{2})\/(\d{2})/); return RegExp.$1 + RegExp.$2 + RegExp.$3; }"
MsgBox sc.CodeObject.extractDate("今日の日付は2011/03/18です。")

※パラメータの無い関数だと罠があった。(Office2010で確認)
sc.AddCode "function noParam() { return 'やっほ〜'; }"
MsgBox sc.CodeObject.noParam() '←何故かエラーになる
MsgBox sc.CodeObject.noParam(0) '←適当にパラメータを渡すと動く
MsgBox CallByName(sc.CodeObject, "noParam", VbMethod) '←CallByNameを使うとパラメータが無くても動く
posted by 忘却の達人 at 00:51| Comment(0) | TrackBack(0) | vba | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。