※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を使うとパラメータが無くても動く