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連携に活用できる ようになります。
