技術メモ

Excel VBAでJSONを扱えるようにする

メモ-アイキャッチ

こんにちは!ゆーたろうです。

前書き

このカテゴリーでは、私が日々開発を行っている際に、気づいたことや学んだことのアウトプットや、備忘録という名のブックマークも兼ねて、残していきます。

「技術メモ」としたように、本当にメモ書きレベルになっている記事もあります。

また、なるべく、当時の私がどのような問題にあたり、どう解決したかも残したい(=完全に自分の成長のためです笑)ので、思考プロセスも書いています。

併せてご了承いただければ幸いです。

本題

ExcelVBAでJSON処理を実装しようとした背景

現在、Web業界をはじめとして、ICT業界ではデータ送信の際、これまでのXML形式からJSONを使うことがスタンダードになってきています。

JSONは本業でAndroid開発を行った際にJSONというものを初めて使い、興味を持ったのもあり、今後の市場ニーズにこたえられるように、勉強がてらやってみることにしました。

躓いた点

まず、VBAでJSONのサンプルプログラムを勉強しようと思い、「vba json」とググったところ、下記のサイトが出てきた。

Excel VBA で JSON が扱いたいときは VBA-JSON が便利

というか、openBDという面白そうなサイトがあることにびっくり笑

あとでいろいろいじってみたい!

試しにAPIを手動でたたいたら、こんな感じで返ってきた。

openbd-test-json-request

おおぉ!!いい感じのJSONではないですか。

さっそく、上記のサンプルプログラムを張り付けていざ実行!。。。も、「型が定義されていません」というエラーが「jsonconverter」上に表示されていた。

エラーを調査したら、ライブラリ不足が原因だった

「excel vba jsonconverter 型が定義されていません」として調べたところ、コンパイルエラー「ユーザ定義型は定義されていません」と表示されてしまいます。という知恵袋にこんなことが書かれていました。

> コンパイルエラー「ユーザ定義型は定義されていません」と表示されてしまいます。

そのエラーが出るのは、コードに問題があるのではなく、必要なライブライに対して参照設定がされていないからです。

ここでピンと来ました。つまり、VBAでIEオブジェクトを使えるようにしたように、「開発タブ」の「参照設定」から必要なライブラリにチェックすればいいのだと。

ライブラリ設定し、実行したらJSON取得成功!!

https://minor.hatenablog.com/entry/2016/10/11/205527

【VBA】JSONファイルの内容をEXCELファイルに読み込む

こちらのサイトを参考に、ExcelにJsonConverter.basファイルをインポートさせたうえで、開発タブから「Microsoft Scripting Runtime」にチェックを入れました。

vba-json-running-ok

うまくいきました!

これで私の実現したいJSON処理の土台はできましたので、あとは自分サーバにアクセスし、DBの内容をphpからSQLで取ってくる。それをJSONにまとめてVBAで取得することができれば、晴れて作りたかった機能の一部分が完成です!!

楽しくなってきましたね^^