Excel VBA 逆引き集 | JSON 書き出し

Excel VBA
スポンサーリンク

JSON書き出しの基本

Excel VBAで「シートのデータをJSON形式に変換して保存したい」「フォーム入力をJSONファイルに出力したい」という場面では JSON書き出し処理 を組み込むと便利です。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • JSON書き出しとは?
    Excelのデータを「キーと値の組み合わせ」で表現するテキスト形式に変換し、外部システムやWeb APIに渡せるようにする処理。
  • 用途:
    • シートのデータを外部システムに渡す
    • フォーム入力をJSONファイルに保存
    • Excelをデータベース的に利用

テンプレ1:単純なJSON文字列を作成して保存

Sub WriteJSON_Basic()
    Dim fso As Object, ts As Object
    Dim jsonText As String
    
    ' JSON文字列を作成
    jsonText = "{""name"":""山田太郎"",""age"":30,""address"":""東京都江東区""}"
    
    ' ファイルに書き出し
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.CreateTextFile(Environ("USERPROFILE") & "\Desktop\output.json", True)
    ts.Write jsonText
    ts.Close
    
    MsgBox "JSONファイルを書き出しました!"
End Sub
VB
  • ポイント:
    • 文字列を直接JSON形式で作成。
    • CreateTextFile でファイルに保存。

テンプレ2:シートのデータをJSONに変換して保存

シート「Data」に以下の表があると仮定:

名前年齢住所
山田太郎30東京都江東区
鈴木花子25千葉県船橋市

コード例:

Sub WriteJSON_FromSheet()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim lastRow As Long, i As Long
    Dim jsonText As String
    
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    jsonText = "{""users"":["
    
    For i = 2 To lastRow
        jsonText = jsonText & "{""name"":""" & ws.Cells(i, 1).Value & """,""age"":" & ws.Cells(i, 2).Value & ",""address"":""" & ws.Cells(i, 3).Value & """}"
        If i < lastRow Then jsonText = jsonText & ","
    Next i
    
    jsonText = jsonText & "]}"
    
    ' ファイルに書き出し
    Dim fso As Object, ts As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.CreateTextFile(Environ("USERPROFILE") & "\Desktop\users.json", True)
    ts.Write jsonText
    ts.Close
    
    MsgBox "シートのデータをJSONに書き出しました!"
End Sub
VB
  • ポイント:
    • ループで行ごとにJSONオブジェクトを作成。
    • 配列形式([ ... ])でまとめる。

テンプレ3:フォーム入力をJSONに書き出す

UserFormに TextBox1(氏名)TextBox2(年齢)TextBox3(住所)CommandButton1(保存ボタン) を配置。

Private Sub CommandButton1_Click()
    Dim jsonText As String
    jsonText = "{""name"":""" & TextBox1.Value & """,""age"":" & TextBox2.Value & ",""address"":""" & TextBox3.Value & """}"
    
    Dim fso As Object, ts As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.CreateTextFile(Environ("USERPROFILE") & "\Desktop\form_output.json", True)
    ts.Write jsonText
    ts.Close
    
    MsgBox "フォーム入力をJSONに書き出しました!"
End Sub
VB
  • ポイント:
    • フォーム入力をそのままJSON形式に変換。
    • 外部システムに渡すデータ作成に便利。

テンプレ4:整形して見やすいJSONを出力(改行付き)

Sub WriteJSON_Pretty()
    Dim jsonText As String
    jsonText = "{ " & vbCrLf & _
               "  ""name"": ""山田太郎""," & vbCrLf & _
               "  ""age"": 30," & vbCrLf & _
               "  ""address"": ""東京都江東区""" & vbCrLf & _
               "}"
    
    Dim fso As Object, ts As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.CreateTextFile(Environ("USERPROFILE") & "\Desktop\pretty.json", True)
    ts.Write jsonText
    ts.Close
    
    MsgBox "整形済みJSONを書き出しました!"
End Sub
VB
  • ポイント:
    • vbCrLf を使って改行。
    • 人間が読みやすいJSONを出力。

例題で練習

'例1:単純なJSON文字列を保存
'例2:シートのデータをJSONに変換して保存
'例3:フォーム入力をJSONに書き出す
'例4:改行付きで整形済みJSONを出力
VB

初心者向けポイント

  • JSONは「キー: 値」の組み合わせ → 文字列を組み立てるだけで作れる。
  • シートやフォームの値を文字列に埋め込む& で連結。
  • 配列形式にすると複数データをまとめられる[ {...}, {...} ]
  • 改行を入れると見やすいvbCrLf を活用。
  • 外部システム連携に必須 → ExcelからJSONを出力できると業務の幅が広がる。

👉 この「JSON書き出しテンプレ」を覚えておけば、Excel VBAで シートやフォームのデータをJSON形式に変換して保存し、外部システムやAPI連携に活用できる ようになります。

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