
VBA-JSON 完整入門一個文件讓 Excel 和 Access 輕松解析 JSON【免費下載鏈接】VBA-JSONJSON conversion and parsing for VBA項目地址: https://gitcode.com/gh_mirrors/vb/VBA-JSON文章關(guān)鍵詞核心關(guān)鍵詞——「VBA JSON 解析」長尾關(guān)鍵詞——Excel VBA 解析 JSON、VBA JSON 轉(zhuǎn) Dictionary、Excel 讀取 API 數(shù)據(jù)、JsonConverter.bas 導(dǎo)入、Access 讀取 JSON 配置。當(dāng) API 返回一長串 JSON你只能對著 Excel 嘆氣時你有沒有過這樣的經(jīng)歷費盡周折從某個接口拿到一份 JSON 數(shù)據(jù)想整理進(jìn) Excel 表格結(jié)果打開一看全是一行擠成幾萬字符的大括號文本縮進(jìn)、換行全無你只能一邊嘆氣一邊手工復(fù)制粘貼又或者你的 Access 系統(tǒng)想讀取一個配置文件對方偏偏只提供 JSON 格式。這種JSON 近在眼前卻無從下手的挫敗感正是無數(shù) VBA 開發(fā)者的日常。而今天要介紹的VBA-JSON就是來終結(jié)這種痛苦的——它讓 Excel、Access 等 Office 應(yīng)用解析 JSON簡單到只差一次導(dǎo)入。項目速覽VBA-JSON 是什么、給誰用一句話定義VBA-JSON 是一個純 VBA 編寫的 JSON 解析與生成庫核心只有一個JsonConverter.bas文件。它把 JSON 字符串解析成 VBA 熟知的字典Dictionary和集合Collection也能把字典、集合、數(shù)組反向轉(zhuǎn)成 JSON 字符串。它適合誰所有在 Excel、Access、Word、Outlook 里寫過 VBA 宏的人——尤其是那些需要對接 Web API、處理配置文件、在系統(tǒng)間交換數(shù)據(jù)卻苦于 VBA 沒有原生 JSON 支持的朋友。它的核心亮點?極致簡單整個庫就一個文件導(dǎo)入即用零依賴安裝僅需一個 Windows 自帶引用?雙向轉(zhuǎn)換既能ParseJson把 JSON 讀進(jìn)來也能ConvertToJson把數(shù)據(jù)寫出去還支持縮進(jìn)美化輸出?跨平臺兼容通過條件編譯同時支持 Windows 和 Mac覆蓋 Excel 2007 及以上版本Access 等其他 Office 應(yīng)用同樣適用?細(xì)節(jié)處理扎實內(nèi)置大數(shù)字保護(hù)、轉(zhuǎn)義字符、日期時間ISO 8601/UTC轉(zhuǎn)換并附有一套完整的測試用例specs/Specs.bas?開源免費MIT 許可可直接用于商業(yè)項目有它 vs 沒有它JSON 處理的差距有多大先說結(jié)論沒有 VBA-JSON你要么手工復(fù)制粘貼要么寫上百行字符串處理代碼有了它核心操作一行搞定。場景沒有 VBA-JSON有 VBA-JSON從接口拿數(shù)據(jù)手動復(fù)制、逐段拆分、反復(fù)調(diào)試ParseJson一行轉(zhuǎn)成對象直接取值給別的系統(tǒng)傳數(shù)據(jù)手工拼字符串少個引號全盤報錯ConvertToJson自動生成合法 JSON修改嵌套數(shù)據(jù)每層都要寫定位邏輯頭大像操作字典一樣obj(a)(b) 1處理時間戳手寫格式轉(zhuǎn)換容易踩時區(qū)坑內(nèi)置 ISO 8601 與 UTC 轉(zhuǎn)換函數(shù)舉個生活化的例子你要把一份商品清單傳給公司的 Web 系統(tǒng)沒有 VBA-JSON 時你得自己拼{name:筆記本,price:5999}這種字符串一旦某個值里帶了引號或反斜杠整個字符串就廢了你還得滿屏找 bug。有了 VBA-JSON你把數(shù)據(jù)放進(jìn)字典ConvertToJson自動幫你處理所有轉(zhuǎn)義幾秒鐘生成標(biāo)準(zhǔn) JSON——是不是瞬間安心了再比如你每天要從天氣 API 拉數(shù)據(jù)更新報表。沒有它你只能開著兩個窗口來回切換復(fù)制有了它寫一個循環(huán)把數(shù)據(jù)寫進(jìn)單元格以后每天一鍵刷新。差距就是這么直觀。上手實操三關(guān)跑通你的第一個 JSON 示例既然心動了我們就直接動手。整個過程分成三關(guān)每一關(guān)都有明確的通關(guān)現(xiàn)象幫你確認(rèn)成功。第一關(guān)拿到 JsonConverter.bas 并導(dǎo)入先獲取項目源碼在命令行執(zhí)行g(shù)it clone https://gitcode.com/gh_mirrors/vb/VBA-JSON然后打開你的 Excel或 Access按Alt F11進(jìn)入 VBA 編輯器在菜單欄選擇文件 → 導(dǎo)入文件選中項目里的JsonConverter.bas并確定。通關(guān)現(xiàn)象左側(cè)項目資源管理器里出現(xiàn)名為JsonConverter的模塊雙擊能看到大約 1100 行代碼??吹剿谝魂P(guān)就過了。配圖建議此處可放置一張「VBA 編輯器中導(dǎo)入 JsonConverter.bas 后的項目資源管理器」截圖幫助讀者對照確認(rèn)建議分辨率 600×300 以上。第二關(guān)配好字典Dictionary依賴VBA-JSON 把 JSON 對象解析成字典而字典在 VBA 里不是一個內(nèi)置類型需要手動聲明依賴Windows 用戶在 VBA 編輯器菜單點擊工具 → 引用在彈出的窗口中勾選Microsoft Scripting Runtime點確定。Mac 用戶需要額外引入 VBA-Dictionary 項目里的Dictionary.cls類文件Mac 版 VBA 不帶 Scripting Runtime。通關(guān)現(xiàn)象這一步?jīng)]有直接的可視反饋但你可以在代碼窗口隨便打一個Dim d As Dictionary如果不彈用戶定義類型未定義的編譯錯誤就說明依賴配好了。第三關(guān)運行你的第一段 JSON 代碼在 VBA 編輯器里插入一個標(biāo)準(zhǔn)模塊粘貼下面的代碼這是我特意挑的極簡版本完整演示解析 → 改數(shù)據(jù) → 生成全流程Sub 我的第一個JSON程序() 注意VBA 字符串里的引號要寫兩遍這是 VBA 的語法規(guī)則 Dim jsonText As String jsonText {a:123,b:[1,2,3,4],c:{d:456}} 核心一步把 JSON 字符串解析成對象 Dim obj As Object Set obj JsonConverter.ParseJson(jsonText) 取值對象用鍵名數(shù)組解析成 Collection下標(biāo)從 1 開始 Debug.Print obj(a) 輸出 123 Debug.Print obj(b)(2) 輸出 2b 是數(shù)組第二項 Debug.Print obj(c)(d) 輸出 456嵌套對象 改數(shù)據(jù)像操作字典一樣直接賦值 obj(c)(e) 789 反向生成帶 2 空格縮進(jìn)的美化版 JSON Debug.Print JsonConverter.ConvertToJson(obj, Whitespace:2) End Sub把光標(biāo)停在子過程里按F5運行然后按Ctrl G打開立即窗口。通關(guān)現(xiàn)象你能依次看到123、2、456最后是一段縮進(jìn)整齊的 JSON——其中c里多了你剛加進(jìn)去的e: 789。三關(guān)全過恭喜你已經(jīng)會用 VBA-JSON 了真實案例三個貼近日常的實戰(zhàn)場景會跑示例只是開始下面三個場景都是平時最容易遇到的代碼只保留最關(guān)鍵部分。案例一把天氣 API 的 JSON 寫進(jìn) Excel 表格背景你每天要更新一張?zhí)鞖鈱Ρ缺頂?shù)據(jù)來自某個接口返回的 JSON。操作解析 JSON 后遍歷天數(shù)組逐行寫入單元格Sub 導(dǎo)入天氣數(shù)據(jù)() Dim jsonText As String jsonText {city:上海,days:[{date:2026-08-19,temp:31},{date:2026-08-20,temp:29}]} Dim root As Object Set root JsonConverter.ParseJson(jsonText) Dim row As Long row 2 從第 2 行開始寫 Dim day As Object For Each day In root(days) days 數(shù)組被解析成 Collection Cells(row, 1).Value root(city) Cells(row, 2).Value day(date) Cells(row, 3).Value day(temp) row row 1 Next day MsgBox 已寫入 root(days).Count 天天氣數(shù)據(jù) End Sub結(jié)果運行后表格里出現(xiàn) 2 行數(shù)據(jù)城市、日期、溫度一目了然。之后把jsonText換成真實接口返回的內(nèi)容就是一張全自動更新的報表。案例二Access 用 config.json 管理配置背景你的 Access 小系統(tǒng)的連接參數(shù)、重試次數(shù)想放在外部配置文件里改配置不用動代碼。操作用文件系統(tǒng)對象讀取config.json再交給ParseJsonFunction 讀取配置() As Object 用 CreateObject 晚綁定避免額外的引用配置 Dim fso As Object, ts As Object Set fso CreateObject(Scripting.FileSystemObject) Set ts fso.OpenTextFile(CurrentProject.Path \config.json, 1) 1 只讀 Dim text As String text ts.ReadAll ts.Close Set 讀取配置 JsonConverter.ParseJson(text) JSON 對象 → Dictionary End Function Sub 測試配置讀取() Dim cfg As Object Set cfg 讀取配置() Debug.Print cfg(database)(host) 取嵌套配置config.json 里的 database.host Debug.Print cfg(retryTimes) 取普通配置項 End Sub結(jié)果只要config.json結(jié)構(gòu)不變改參數(shù)就改文件代碼零改動。給不懂代碼的同事用特別省心。案例三把 Excel 報表一鍵導(dǎo)出為 JSON背景Web 端同事要接你的銷售數(shù)據(jù)你不想手工整理希望一鍵生成標(biāo)準(zhǔn) JSON 文件。操作把數(shù)據(jù)裝進(jìn)字典用ConvertToJson生成帶縮進(jìn)的 JSON再寫入文件Sub 導(dǎo)出報表為JSON() Dim data As Object Set data CreateObject(Scripting.Dictionary) data.Add 報表名稱, 8月銷售數(shù)據(jù) data.Add 更新時間, Format(Now(), yyyy-mm-dd hh:nn:ss) data.Add 產(chǎn)品, Array(手機(jī), 筆記本, 平板) data.Add 銷量, Array(120, 85, 66) Dim json As String json JsonConverter.ConvertToJson(data, Whitespace:2) 2 縮進(jìn) 2 個空格 Dim fso As Object, ts As Object Set fso CreateObject(Scripting.FileSystemObject) Set ts fso.CreateTextFile(report.json, True) ts.Write json ts.Close MsgBox 已導(dǎo)出 report.json End Sub結(jié)果當(dāng)前目錄下生成report.json格式美觀、轉(zhuǎn)義正確Web 端直接拿去用省掉了兩邊的扯皮。避坑指南別人踩過的坑你提前繞開以下四個坑是新手最容易踩的提前知道能省下大量排查時間坑 1編譯報用戶定義類型未定義。幾乎都是字典依賴沒配好。Windows 用戶請檢查是否勾選了工具 → 引用 → Microsoft Scripting RuntimeMac 用戶確認(rèn)已導(dǎo)入 VBA-Dictionary 的Dictionary.cls。??坑 2obj(b)(0)報下標(biāo)越界。VBA-JSON 把 JSON 數(shù)組解析成 VBA 的Collection下標(biāo)從1開始不是很多編程語言習(xí)慣的 0這是新手最常見、最容易忽略的差異。坑 3身份證號、訂單號被截斷。VBA 本身只保存 15 位有效數(shù)字超過就會丟精度。VBA-JSON 的默認(rèn)策略很聰明超過 15 位的純數(shù)字一律按字符串處理所以默認(rèn)是安全的。如果你確實需要數(shù)值類型再顯式設(shè)置JsonConverter.JsonOptions.UseDoubleForLargeNumbers True但要接受精度損失。坑 4解析時報錯 10001JSON parse error。常見誘因是 JSON 里有多余的尾逗號或鍵沒有加引號。標(biāo)準(zhǔn) JSON 要求鍵必須用引號包裹如果你對接的是不規(guī)范的內(nèi)部接口可以設(shè)置JsonConverter.JsonOptions.AllowUnquotedKeys True放寬限制。坑 5手寫 JSON 字符串時引號爆炸。在 VBA 代碼里寫 JSON內(nèi)部所有引號都要翻倍稍不留神就寫錯。更穩(wěn)妥的做法是把 JSON 存成文件再讀或通過接口實時獲取。進(jìn)階思路從會用走向用精跑通案例之后沿著下面這條路徑你能把這套庫用到飛起吃透日期時間函數(shù)。VBA-JSON 內(nèi)置了ParseIso、ConvertToIso、ParseUtc、ConvertToUtc對接帶時區(qū)的時間戳再也不用自己硬算偏移量。配合 HTTP 請求做真正的接口調(diào)用。用 VBA 自帶的WinHttpRequest或MSXML2.XMLHTTP發(fā) GET/POST 請求把響應(yīng)文本直接喂給ParseJson你的 Excel 就擁有了實時數(shù)據(jù)駕駛艙。讀懂測試用例。打開specs/Specs.bas里面覆蓋了幾十個邊界場景——轉(zhuǎn)義字符、Unicode、null、多層嵌套、畸形輸入等??匆槐檫@些用例你對 JSON 各種坑的理解會直接上一個臺階。研究JsonOptions的其余開關(guān)。比如EscapeSolidus把/轉(zhuǎn)義成\/某些安全要求嚴(yán)格的接口會用到。關(guān)注生態(tài)整合。VBA-JSON 出身于 VBA-Web 項目熟悉它之后再接觸 VBA-Web 等周邊庫就能組合出請求 → 解析 → 展示的完整 API 客戶端方案。結(jié)尾別收藏了現(xiàn)在就動手還記得開頭對著 JSON 長文本嘆氣的自己嗎解決它的鑰匙其實只是導(dǎo)入一個文件、勾一個引用、寫一行ParseJson。今天的三個步驟——克隆項目、導(dǎo)入JsonConverter.bas、跑通第一段示例代碼——你現(xiàn)在就能完成全部耗時不超過 10 分鐘。下一步去找一份真實的 JSON 數(shù)據(jù)比如某個公開天氣接口照著案例一把它變成你的 Excel 表格。把收藏?fù)Q成運行你的 Office 應(yīng)用從此就擁有和現(xiàn)代語言一樣的 JSON 處理能力了?!久赓M下載鏈接】VBA-JSONJSON conversion and parsing for VBA項目地址: https://gitcode.com/gh_mirrors/vb/VBA-JSON創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考