2017年01月22日

vba/vbscript:64bit環境でJSONをパース

※ 2018/04/29 いろいろ編集

vba/vbscriptでJSONをパースするにScriptControlを使っていたが、64bit環境だとScriptControlが使えないから困る。何か代わりはないかと思ってた所、最初はIEが使えることに気づき、でもその後に"HtmlFile"なるものが使えるということを知った。
※Windows10 64bit/Excel2016 64bitで確認

vbscript 
Dim doc, jsn
'HTMLDocumentを取得
Set doc = CreateObject("HtmlFile")
'JSONオブジェクトを使うにはIEの互換表示で8以上(edgeも可)にする。
doc.write "<meta http-equiv='X-UA-Compatible' content='IE=8' />"
'scriptタグを追加
'パースはJSON.parseを使うとチェックが厳しいのでevalを使う。
doc.write "<script>document.JsonParse=function (s) {return eval('(' + s + ')');}</script>"
doc.write "<script>document.JsonStringify=JSON.stringify;</script>"
'パース関数でJSONオブジェクトを取得
Set jsn = doc.JsonParse("{a:1,b:2}")
'パース後の値を確認
WScript.Echo jsn.b
'Jsonオブジェクトを文字列に変換
WScript.Echo doc.JsonStringify(jsn)

※vbaの場合は上記のWScript.EchoのとこをMsgBoxにでもして関数化すれば確認できる。


posted by 忘却の達人 at 09:39| Comment(0) | TrackBack(0) | vba | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

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