Json常用來存儲數(shù)據(jù)更哄,使用ScriptControl對象方法將Json數(shù)據(jù)提取到Excel中。
代碼如下:
Sub?JsonToRng()? ??
Dim?sJson$,?js$
sJson?=?Range("A1") '?JSON?數(shù)據(jù)在A1
js?=?"var?r,k,row=c=1,d={};for(r?in?j){row++;for(k?in?j[r]){if(!d[k]){d[k]=c++;rng(1,d[k])=k;}rng(row,d[k])=?j[r][k];}}"
js?=?"j="?&?sJson?&?";"?&?js
With?CreateObject("ScriptControl")
.Language?=?"JScript"
.AddObject?"rng", Range("A3")? '?A3?是起始單元格锥累,可以改為別的單元格
.eval?(js)
End?With
End?Sub
JS說明
//j= sJson , rng 是用 AddObject 加入的單元格
var r, k,
? ? row = c = 1, //起始單元格的相對 行集歇、列 偏移
? ? d = {}; //空字典
for (r in j) {
? ? row++; //行 偏移
? ? for (k in j[r]) {
? ? ? ? if (!d[k]) {? //如果key不存在桶略,則添加 key 和 標(biāo)題行
? ? ? ? ? ? d[k] = c++; //列 偏移 和 key 相關(guān)聯(lián)
? ? ? ? ? ? rng(1, d[k]) = k; //把key寫到 標(biāo)題行
? ? ? ? }
? ? ? ? rng(row, d[k]) = j[r][k]; //把Value寫到 單元格
? ? }
}
注:以上代碼來自網(wǎng)絡(luò)