目次
はじめに
Excel VBA だけで JSON 形式のデータを扱う場合、ScriptControl を利用して JavaScript の eval 関数に解析させる手法が手軽です。本記事では、配列形式の JSON を読み込み、各オブジェクトの値をセルへ順次書き込む手順を解説いたします。
準備環境
| 項目 | 内容 |
|---|---|
| OS | Windows 10/11 |
| Excel | Microsoft 365/2019/2016 |
| 追加ライブラリ | なし(標準機能のみ) |
サンプルコード
Sub ParseJsonWithScriptControl()
Dim jsonText As String ' JSON 文字列
Dim jsonArr As Object ' 解析後の配列
Dim itm As Object ' 各オブジェクト
Dim sc As Object ' ScriptControl
Dim tgtCell As Range ' 書き込み開始セル
' JSON 文字列を組み立て(カンマ区切りに注意)
jsonText = "[" & _
"{""Name"":""Mori"",""Value"":100}," & _
"{""Name"":""Hayashi"",""Value"":200}," & _
"{""Name"":""Ki"",""Value"":300}" & _
"]"
' ScriptControl で JSON を評価
Set sc = CreateObject("ScriptControl")
sc.Language = "JScript"
Set jsonArr = sc.CodeObject.eval(jsonText)
' 書き込み開始セルを指定
Set tgtCell = Sheet1.Range("A2")
' 各オブジェクトをセルへ出力
For Each itm In jsonArr
tgtCell.Value = itm.Name
tgtCell.Offset(0, 1).Value = CallByName(itm, "Value", VbGet)
Set tgtCell = tgtCell.Offset(1) ' 次の行へ移動
Next itm
End Sub
コードのポイント
| 処理 | 説明 |
|---|---|
ScriptControl | JavaScript 環境を動的に生成し、eval で JSON をオブジェクト化します。 |
| JSON 文字列の区切り | 複数オブジェクトを並べる際は カンマ を忘れないよう注意します。 |
CallByName | プロパティ名を文字列で指定し、動的に値を取得します。 |
応用アイデア
| 目的 | 実装例 |
|---|---|
| ネストした JSON の解析 | itm.Children(0) や再帰的なループで深い階層をたどる |
| VBA-JSON との併用 | 大規模データや型変換が必要な場合は外部ライブラリ(VBA-JSON)を検討 |
| API から取得した JSON の処理 | MSXML2.XMLHTTP で API を呼び出し、ResponseText を jsonText に代入 |
まとめ
ScriptControl を使えば追加ライブラリなしで JSON を手軽に解析できます。配列型 JSON を Excel シートへ展開することで、データの整形や集計が容易になります。要件に応じて VBA-JSON ライブラリとも使い分けてください。
技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。
気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
