VBAによるexcelデータテーブルのJSONファイル生成(utf 8)
3553 ワード
ADODB.StreamはUTF-8+BOMコードのテキストファイルを作成します.
その後、データ領域を巡り、データをフォーマットし、出力すればいいです.
小さいデータはまあまあですが、大きなデータはテストされていません.
また、fsoで作成したテキストファイルはANSIとして符号化され、ajaxでjsonを解析中に文字化けして正常に解析できない.
その後、データ領域を巡り、データをフォーマットし、出力すればいいです.
小さいデータはまあまあですが、大きなデータはテストされていません.
また、fsoで作成したテキストファイルはANSIとして符号化され、ajaxでjsonを解析中に文字化けして正常に解析できない.
Sub
ToJson()
' UTF8
myrange = Worksheets(
"sheet1"
).UsedRange
'
'myrange = ActiveWorkbook.Names("schoolinfo").RefersToRange '
'myrange = Range(Worksheets("sheet1").Range("a1").End(xlDown), Worksheets("sheet1").Range("a1").End(xlToRight)) '
Total = UBound(myrange, 1)
'
Fields = UBound(myrange, 2)
'
Dim
objStream
As
Object
Set
objStream = CreateObject(
"ADODB.Stream"
)
With
objStream
.Type = 2
.Charset =
"UTF-8"
.Open
.WriteText
"{"
"total"
":"
& Total &
","
"contents"
":["
For
i = 2
To
Total
.WriteText
"{"
For
j = 1
To
Fields
.WriteText
""
""
& myrange(1, j) &
""
":"
""
& Replace(myrange(i, j),
""
""
,
"\""
") & "
""
"
If
j <> Fields
Then
.WriteText
","
End
If
Next
If
i = Total
Then
.WriteText
"}"
Else
.WriteText
"},"
End
If
Next
.WriteText
"]}"
.SaveToFile ActiveWorkbook.FullName &
".json"
, 2
End
With
Set
objStream =
Nothing
End
Sub