【入門編】【上級者向け】Word表のデータをJSON形式に変換して外部APIへ送信する連携術 – Word VBA解析バイブル

スポンサーリンク

Word VBAを「ただの文書作成ツール」で終わらせるな。表データをJSON化し、世界と繋ぐ極限の自動化術

こんにちは。Word VBAの深淵を覗き込もうとしている皆さん。

「Wordで表を作る」……多くの人はここで思考を止めます。しかし、プロフェッショナルな視点で見れば、Wordの表(Table)は、極めて強力な「構造化データの器」に他なりません。

今回は、Wordにある表データを抽出し、現代のシステム連携の共通言語である「JSON」へと昇華させ、外部APIへ送信するまでの技術体系を伝授します。マクロの記録という「箱庭」から脱却し、真の自動化エンジニアへの第一歩を踏み出しましょう。

—

1. なぜWordの「表」をJSON化するのか?

業務において、見積書、仕様書、進捗管理表などはWordで管理されることが多いはずです。しかし、そのデータが「ただの印刷物」として消えていくのはあまりにも勿体ない。

JSON(JavaScript Object Notation)化することで、Wordのデータを:

  • Webシステム(Salesforceやkintone等)へ自動登録する
  • BIツールで可視化して経営判断に活かす
  • 別のデータベースと同期させる

これらが可能になります。Wordが「単なる文書作成ソフト」から「データの入口」へと変貌する瞬間です。

—

2. 実装の設計図:3つのステップ

今回のタスクは以下の手順で完結させます。

1. データの抽出: 表の各セルを走査し、配列へ格納する。
2. シリアライズ: 配列をJSON形式の文字列に変換する。
3. 転送: `MSXML2.XMLHTTP` を使い、APIエンドポイントへPOST送信する。

—

3. 実践コード:Wordから世界へ繋ぐエンジニアリング

以下のコードは、Wordの最初の表(Table(1))を読み込み、APIに送信する例です。

‘ 必要な参照設定: Microsoft XML, v6.0
Sub ExportTableToJsonAndPost()
Dim tbl As Table
Dim json As String
Dim i As Long, j As Long
Dim rowData As String

‘ 1. 表の取得(アクティブな文書の最初の表)
Set tbl = ActiveDocument.Tables(1)

‘ 2. JSON配列の構築(簡易的な手動組み立て)
json = “[”
For i = 2 To tbl.Rows.Count ‘ 1行目はヘッダーと仮定
rowData = “{”
rowData = rowData & “””item””: “”” & CleanText(tbl.Cell(i, 1).Range.Text) & “””,”
rowData = rowData & “””value””: ” & CleanText(tbl.Cell(i, 2).Range.Text)
rowData = rowData & “}”

json = json & rowData & IIf(i < tbl.Rows.Count, ",", "") Next i json = json & "]" ' 3. HTTP POST送信 Call PostToApi("https://api.example.com/data", json) End Sub ' 不要な改行コードや終端記号を除去するヘルパー関数 Function CleanText(txt As String) As String CleanText = Replace(Replace(txt, vbCr, ""), vbCell, "") End Function ' API連携の実体 Sub PostToApi(url As String, payload As String) Dim http As Object Set http = CreateObject("MSXML2.XMLHTTP") With http .Open "POST", url, False .SetRequestHeader "Content-Type", "application/json" .Send payload If .Status = 200 Then MsgBox "送信成功!" Else MsgBox "エラー発生: " & .StatusText End If End With End Sub ---

4. 現場で陥りやすい「罠」とその対策

① セル内の「見えない文字列」

Wordのセルには、必ず `vbCr`(段落記号)と `vbCell`(セル終端記号)が含まれています。これらを無視してAPIに投げると、JSONのパースエラーが起きます。必ず上記の `CleanText` 関数のようなクリーニング処理を挟んでください。

② セルの結合(Merged Cells)の呪い

結合されたセルを `tbl.Cell(i, j)` で読み込むと、Word VBAは例外(エラー)を投げます。

  • 対策: `tbl.Cell(i, j).Information(wdWithInTable)` を使用して、そのセルが存在するかを確認する防衛的なコードを書くのが上級者の嗜みです。

③ 文字コードと特殊文字

API連携では、日本語を含む場合はUTF-8でのエンコードが必須です。VBA単体での複雑なエンコードは難易度が高いため、まずは「半角英数字のみ」でテストし、徐々に範囲を広げるのが挫折しないコツです。

—

最後に:自動化の先にある景色

Word VBAで表を操作し、APIに繋ぐ。この一連の作業ができるようになると、あなたの手元にあるWordファイルはすべて「生きたデータベース」になります。

「マクロの記録」ボタンを押すだけの日常はもう終わりです。コードを書き、データを流し、システムを連携させる。その手応えこそが、伝説の自動化エンジニアへの第一歩です。

まずは、目の前のWordファイルにある表を一つ、JSONに変換するところから始めてみてください。何か詰まったら、いつでも戻ってきてくださいね。あなたの挑戦を応援しています。

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