JSON解析の基本
最近の業務では、外部システムやWeb APIからデータを受け取る際に JSON形式 がよく使われます。
Excel VBAでJSONを扱うには「文字列として読み込んで解析する」仕組みが必要です。初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- JSONとは?
JavaScript Object Notation の略で、データを「キーと値の組み合わせ」で表現するテキスト形式。
例:
{
"name": "山田太郎",
"age": 30,
"address": "東京都江東区"
}
JSON- Excel VBAでJSONを扱う方法:
- 標準VBAにはJSONパーサーがないため、外部ライブラリ(例:VBA JSON)を利用するのが一般的。
- JSON文字列を読み込んで「Dictionary」や「Collection」に変換して扱う。
テンプレ1:VBA JSONライブラリを使った基本解析
- GitHubなどで公開されている「VBA JSON」モジュールをプロジェクトに追加。
(JsonConverter.basをインポート) - 参照設定で「Microsoft Scripting Runtime」を有効化。
コード例:
Sub ParseJSON_Basic()
Dim Json As Object
Dim JsonText As String
' JSON文字列(例)
JsonText = "{""name"":""山田太郎"",""age"":30,""address"":""東京都江東区""}"
' JSONを解析
Set Json = JsonConverter.ParseJson(JsonText)
' 値を取り出す
MsgBox "氏名: " & Json("name")
MsgBox "年齢: " & Json("age")
MsgBox "住所: " & Json("address")
End Sub
VB- ポイント:
ParseJsonで文字列をDictionaryに変換。Json("キー名")で値を取り出せる。
テンプレ2:配列を含むJSONの解析
JSON例:
{
"users": [
{"name": "佐藤", "age": 25},
{"name": "鈴木", "age": 28},
{"name": "田中", "age": 32}
]
}
JSONコード例:
Sub ParseJSON_Array()
Dim Json As Object, Users As Object
Dim i As Long
Dim JsonText As String
JsonText = "{""users"":[{""name"":""佐藤"",""age"":25},{""name"":""鈴木"",""age"":28},{""name"":""田中"",""age"":32}]}"
Set Json = JsonConverter.ParseJson(JsonText)
Set Users = Json("users")
For i = 1 To Users.Count
MsgBox "名前: " & Users(i)("name") & " 年齢: " & Users(i)("age")
Next i
End Sub
VB- ポイント:
- 配列は
Collectionとして扱われる。 Users(i)("キー")で要素を取り出す。
- 配列は
テンプレ3:シートに展開する(実務向け)
Sub ParseJSON_ToSheet()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim Json As Object, Users As Object
Dim i As Long
Dim JsonText As String
JsonText = "{""users"":[{""name"":""佐藤"",""age"":25},{""name"":""鈴木"",""age"":28},{""name"":""田中"",""age"":32}]}"
Set Json = JsonConverter.ParseJson(JsonText)
Set Users = Json("users")
ws.Cells.Clear
ws.Range("A1").Value = "名前"
ws.Range("B1").Value = "年齢"
For i = 1 To Users.Count
ws.Cells(i + 1, 1).Value = Users(i)("name")
ws.Cells(i + 1, 2).Value = Users(i)("age")
Next i
MsgBox "JSONデータをシートに展開しました!"
End Sub
VB- ポイント:
- JSON配列をExcelに展開して表形式に。
- 実務で「APIから取得したデータを一覧化」するのに便利。
テンプレ4:外部ファイルからJSONを読み込む
Sub ParseJSON_File()
Dim fso As Object, ts As Object
Dim JsonText As String, Json As Object
' JSONファイルを読み込む
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile("C:\temp\data.json", 1)
JsonText = ts.ReadAll
ts.Close
' 解析
Set Json = JsonConverter.ParseJson(JsonText)
MsgBox "読み込んだデータ: " & Json("name")
End Sub
VB- ポイント:
FileSystemObjectでファイルを読み込む。- そのまま
ParseJsonに渡せる。
例題で練習
'例1:単純なJSONを解析してMsgBoxに表示
'例2:配列を含むJSONを解析してループ処理
'例3:JSONをシートに展開
'例4:外部ファイルからJSONを読み込んで解析
VB初心者向けポイント
- JSONは「キーと値の組み合わせ」 → DictionaryやCollectionで扱える。
- 配列はCollectionになる → ループで処理。
- 外部ライブラリ(VBA JSON)を導入するのが定番 → 標準VBAにはJSONパーサーがない。
- 実務では「APIレスポンスをExcelに展開」する場面が多い → シートに書き出すテンプレを覚えておくと便利。
👉 この「JSON解析テンプレ」を覚えておけば、Excel VBAで 外部システムからのJSONデータを解析し、シートに展開して業務に活用する処理 を簡単に作成できます。
