Excel轉json是一種十分實用的功能,而使用VBA編寫程序進行轉換則可以更加方便快捷。以下是一份較為詳細的VBA代碼,供大家參考:
Sub Excel2Json() Dim i As Long, j As Long Dim row As Range, col As Range Dim jsonObj As Object, jsonArr As Object Dim tempStr As String Set jsonObj = CreateObject("Scripting.Dictionary") Set jsonArr = CreateObject("Scripting.Dictionary") For j = 1 To ActiveSheet.UsedRange.Columns.Count Set col = ActiveSheet.UsedRange.Columns(j) For i = 1 To col.Cells.Count tempStr = Trim(col.Cells(i).Text) If tempStr<>"" Then If Not jsonObj.Exists(tempStr) Then jsonObj.Add tempStr, col.Cells(i).Offset(0, 1).Text Else If TypeName(jsonObj(tempStr)) = "String" Then jsonArr.Add tempStr, Array(jsonObj(tempStr), col.Cells(i).Offset(0, 1).Text) jsonObj.Remove tempStr jsonObj.Add tempStr, jsonArr(tempStr) Else jsonArr(tempStr) = Array(jsonArr(tempStr)(0), col.Cells(i).Offset(0, 1).Text) jsonObj.Remove tempStr jsonObj.Add tempStr, jsonArr(tempStr) End If End If End If Next i Next j tempStr = JsonConverter.ConvertToJson(jsonObj) Debug.Print tempStr End Sub
這段代碼的作用是遍歷Excel中的每一個單元格,將其中的內容轉換成json格式。其中用到了VBA中自帶的Scripting.Dictionary對象,來構造json對象。具體實現過程如下:
- 首先創建一個字典對象jsonObj,用于保存Excel中的單元格數據。
- 然后遍歷Excel中的每一個單元格,并將其中的內容以"鍵-值"的形式存入jsonObj中。值的存儲方式為:
- 若一個鍵對應多個值,則將這些值存儲在一個數組中,并將這個數組作為該鍵的值。
- 若一個鍵只對應一個值,則直接將這個值存入字典中。
- 最后將構造好的jsonObj通過對象轉換器JsonConverter轉換成json格式并輸出。
值得注意的是,以上代碼中使用了第三方的JsonConverter對象。在使用前需要先引用相關庫,無法直接使用,需自行下載安裝。