Excel VBA 逆引き集 | JSON 解析

Excel VBA
スポンサーリンク

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ライブラリを使った基本解析

  1. GitHubなどで公開されている「VBA JSON」モジュールをプロジェクトに追加。
    JsonConverter.bas をインポート)
  2. 参照設定で「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データを解析し、シートに展開して業務に活用する処理 を簡単に作成できます。

タイトルとURLをコピーしました