ChatGPTにVBAコードを書かせて、いざ実行した瞬間に出る「ユーザー定義型が定義されていません」という冷たいエラー。せっかく業務を効率化しようと一歩踏み出したのに、出鼻をくじかれて挫折しそうになりますよね。

AIが悪いわけでも、あなたのスキルが低いわけでもありません。多くのケースでは Excel側に「JSONを解読する部品(ライブラリ)」が入っていないだけです。
- JsonConverter.bas(VBA-JSON)を入手してVBAへインポート
- VBEの参照設定で Microsoft Scripting Runtime を有効化(または回避策で遅延バインディング)
- 通信なしの 最小テストコード で動作確認(成功したらAPIへ進む)

「導入できたら次はAPI連携まで一気にやりたい」という人向けに、シリーズ記事も置いておきます。


私はこれまで零細企業の現場で、「とりあえず動けばいい」で増殖したマクロが、数年後に誰も触れない“負債”になっていく場面を何度も見てきました。単にエラーを消すだけではなく、将来の属人化を防ぐ「環境設計」までセットで解説します。AIを真の部下にする土台を、ここで整えてしまいましょう。
AIが生成したJSONコードでエラーが出る根本原因
結論から言うと、AIが書いたコードで「ユーザー定義型が定義されていません」が出る代表的な原因は、コードの誤りというより「前提となる部品(JSON解析ライブラリ / Dictionary周り)が揃っていない」ことです。
ChatGPTは、ネット上の“よく使われる型”を前提に答えがちです。VBAでJSONを扱うなら、定番は VBA-JSON(JsonConverter.bas)。ただしAIは、あなたのPCにそれが入っているか・参照設定が済んでいるかまでは見てくれません。
「そもそもJSONって何?」から押さえたい場合は、先にここで用語と構造だけ掴むと理解が速いです。

ChatGPTは「あなたのPC環境」までは整えてくれない
AIは「優秀な新人」ですが、「情報システム部」ではありません。新人に「翻訳して」と頼むなら、辞書は上司が用意しますよね。VBAにとってのJSONライブラリは、その辞書です。
現場あるあるですが、AIの出したコードを見て「ChatGPTは嘘つきだ!」と怒っていた社長さんがいました。画面を一緒に見ると、原因はただ「Microsoft Scripting Runtime」の参照設定がOFFだっただけ。チェックを入れて再実行したら、あっさり動きました。この“環境構築”の概念を知らないと、AIという武器を宝の持ち腐れにします。
- AI:完璧な「組み立て説明書(コード)」をくれる
- あなたのExcel:説明書に書かれた「専用パーツ(ライブラリ)」が入っていない箱
→ 説明書が完璧でも、部品がなければ完成しません。

この先は「部品の入手」と「Excelへの組み込み」を、つまずきポイント込みで最短ルートに整えます。
JsonConverter.basの入手方法と失敗しない導入ステップ
VBAでJSONを扱うなら、定番ライブラリ VBA-JSON(JsonConverter.bas) の導入が最短ルートです。VBA標準機能だけではJSONを解析できないため、このライブラリが“翻訳辞書”になります。
導入は大きく2つだけです。
- ファイル入手(JsonConverter.basを手に入れる)
- Excel側設定(インポート+参照設定)
GitHubからのダウンロードとファイルの解凍手順

まず、VBA-JSONをGitHubから入手します。ここで迷う人が多いです。私の支援現場でも「どれが本体かわからない」「関係ないファイルを開いて時間が溶けた」は頻発します。ポイントは“JsonConverter.basだけ見つける”こと。
- GitHubの「VBA-JSON(VBA-tools)」公開ページへアクセス
- Releases(リリース)が用意されている場合は、原則そちらからzipを入手(慣れていない人ほど事故が少ない)
- zipを解凍して、フォルダ内の JsonConverter.bas を探す
展開したフォルダの中に「JsonConverter.bas」が見つかれば準備完了です。
- 「Zipを解凍できていない」→ フォルダの中身が見えず迷子になります
- 「JsonConverter.bas以外をインポート」→ 不要ファイルでVBEが散らかり、後で管理不能になります
VBAエディタへのインポートと必須の参照設定

次に、手に入れたファイルをExcelに読み込ませ、参照設定(紐付け)をします。ここを忘れると、コードが正しくても動かない/または別のエラーに化けます。
- Excelで Alt + F11 → VBAエディタ(VBE)を開く
- メニューの「ファイル」→「ファイルのインポート」→ JsonConverter.bas を取り込む
- メニューの「ツール」→「参照設定」→ Microsoft Scripting Runtime にチェック → OK
この参照設定は、Dictionary(キーと値の組)を安定して扱うための土台になります。
もし参照設定に「Microsoft Scripting Runtime」が見当たらない場合でも、回避策はあります(後述の「よくあるエラー集」に入れています)。
最小構成で学ぶJSON解析の基本とAIへの正しい命令法
ライブラリ導入後、いきなりAPI連携に突っ込むと、失敗したときに原因が切り分けできません。なので最初は通信なし・外部要因ゼロの最小コードで動作確認してください。これを挟むだけで、復旧が桁違いに早くなります。
ParseJson関数の使い方を最小限のコードで理解する
まずはこのテストコードをコピペしてください。これが動けば「JsonConverter導入+参照設定」は概ね成功です。
Option Explicit
Sub 最小構成のJSONテスト()
Dim jsonText As String
Dim data As Object
‘ 手書きのJSON(まずは“確実に動く”最小データ)
jsonText = “”
‘ 解析(ここでエラーが出なければ、導入は概ねOK)
Set data = JsonConverter.ParseJson(jsonText)
‘ 取り出して表示(Dictionary的にアクセス)
MsgBox data(“品名”) & “の価格は” & data(“価格”) & “円です。”
End Sub
メッセージボックスが出れば、「ExcelがJSONを理解できる状態」になっています。次にAPIへ進むのが最短です。
私は支援のとき、いきなりAPIコードを触りません。まずこの最小テストで「環境がOKか」を確定させ、次に通信(WinHTTP/XMLHTTP)を分離して確認します。
この順番を守るだけで、「3日悩む」が「数分で原因特定」に変わります。
AIにJsonConverterの使用を前提とさせるプロンプト
環境が整ったら、AIへの指示の冒頭で「JsonConverter導入済み」を宣言してください。これだけで、AIが“別解(独自実装)”に逸れて事故る確率が下がります。
「Excel VBAでAPI連携のコードを作成してください。なお、JSON解析には外部ライブラリの『JsonConverter.bas(VBA-JSON)』を使用します。参照設定(Microsoft Scripting Runtime)が有効である前提で、Dictionary形式でデータへアクセスするコードを提示してください。あわせて、よくある実行時エラーの原因と対処もコメントで補足してください。」
AIに丸投げではなく、共通ルール(標準部品)を指定して管理する。これが、非エンジニアがAIを“部下化”する最短ルートです。
よくあるエラーと原因・直し方(ここで9割止まる)
検索でも現場でも、詰まりポイントはほぼここに集約します。エラー文そのまま載せます。

| エラー/症状 | よくある原因 | 対処 |
|---|---|---|
| ユーザー定義型が定義されていません | Dictionary型を使っているのに参照設定がない / 参照先が違う | 参照設定で Microsoft Scripting Runtime をON。もしくは CreateObject(“Scripting.Dictionary”) で遅延バインディングに寄せる |
| オブジェクトが必要です / 実行時エラー ‘424’ | Set漏れ / ParseJsonの返り値の扱い間違い | Set data = JsonConverter.ParseJson(…) を確認。dataの型はObjectでOK(まず動かす) |
| 型が一致しません / 実行時エラー ’13’ | 数値/文字列の混在、Nullの扱い | CStr/CLngなどで明示変換。Nullや存在しないキーは事前にチェック |
| 参照設定にMicrosoft Scripting Runtimeが見当たらない | 環境差 / Office構成差 | 遅延バインディング(CreateObject)に寄せる、または別PC/別Officeで確認。社内で「標準環境」を決めるのが再発防止 |
| 64bit環境でDictionary周りが不安定に感じる | コード側の宣言/依存の組み合わせ | まずは遅延バインディングで統一し、再現条件を切り分ける(“環境台帳”に記録) |
Dim dict As Object
Set dict = CreateObject(“Scripting.Dictionary”)
参照設定が不安定な現場では、こうして「参照設定に依存しない書き方」に寄せるだけで事故が減ります。
経営者のための「死なないシステム」設計論:なぜ部品の管理が必要か

結論から言うと、長く使えるツールに必要なのは「最新のコード」よりも、今回のJsonConverterのような「どの外部部品(ライブラリ)を使っているか」という設計図です。
AIを使えば“動くもの”は速く作れます。でも中身(部品構成)を把握せずにコピペを増やすと、数年後に誰も直せない負債になります。これが本ブログで警告している「デジタル・スラム」です。
「Excelを自作して崩壊した」パターンは、実録でまとめています(同じ事故を避けたい人は先に読んだ方が早いです)。

コピペを繰り返すと社内ツールが「デジタル・スラム」化する
「とりあえず動けばいい」で増築すると、あるPCでは動くのに別PCでは動かない、という事故が起きます。原因の多くは、外部部品がPCごとに違う“環境のバラつき”です。業務効率化のはずが、属人化と停止リスクに変わります。
| 項目 | デジタル・スラム(危険) | 死なないシステム(理想) |
|---|---|---|
| 構築手法 | AIコードを無秩序にコピペ | 標準部品(ライブラリ)を定義 |
| 管理対象 | コードの中身(難解) | 導入部品と設定手順(明確) |
| トラブル時 | 作った本人しか直せない | 手順書どおりに環境を整えれば復旧可能 |
「じゃあ何から設計すればいいの?」は、ここで手順化しています。

さらに、未経験の人が“設計書ベース”で資産化していくロードマップはここです。

経営者が握るべきは「コード」ではなく「部品の台帳」
おすすめは、すべてのマクロに「利用部品」をコメントで残すルールです。たとえば以下のように。
‘【利用部品(環境台帳)】
‘ – VBA-JSON:JsonConverter.bas(入手元:GitHub VBA-tools / VBA-JSON)
‘ – 参照設定:Microsoft Scripting Runtime(または遅延バインディング)
‘ – 通信:WinHTTP / XMLHTTP(使う場合はここに追記)
‘【導入手順メモ】
‘ – JsonConverter.basをインポート → 参照設定 → 最小テストコードで確認
これだけで、PC買い替えや担当交代のたびに詰む確率が激減します。
API連携で広がる業務効率化の可能性

JsonConverterを扱えるようになると、Excelが世界中のデータとつながります。単にデータ取得が楽になるだけでなく、自社の専門知識と組み合わせることで“競合が真似できない”業務ツールが作れます。
住所データから方位を自動計算する仕組み(例)
- 情報の取得:地図系APIに住所を投げ、緯度・経度を含むJSONを受け取る
- データの解析:JsonConverterで必要な数値を抽出してセルへ
- 専門的な計算:atan2 / arccos などで方位を算出
方位角(0〜360°)の算出は、ここで式をコピペできるようにしています。

私の支援先では、事前チェック作業を「担当者の経験」に依存させず、事務スタッフでも回せる形にした結果、移動や確認にかかる時間が月に数十時間規模で減ったケースがあります(※業務内容・件数により差が出ます)。
API連携の具体的な実装(認証やリクエストの作り方)については、関連記事でステップ解説しています。

まとめ
JsonConverterの導入は、単なるエラー解消ではありません。AIという強力な部下が働けるようにする「着任準備(環境設計)」です。
- 結論:AIコードが動かない原因は「部品(ライブラリ/参照設定)」不足が多い
- 対策:JsonConverter.basをインポートし、参照設定(または遅延バインディング)を整える
- 次:最小テスト→API通信、と切り分け手順を守ると挫折しない
次のステップ:
土台が整ったところで、実際にAPIを叩く楽しさを体感してみませんか?

現在、メルマガでは「AIを部下にするためのシステム設計図テンプレート」を無料配布しています。スラム化を防ぎ、経営を楽にしたい方はぜひご登録ください。


コメント