Nếu bạn hỏi file JSON là gì, thì bạn hãy thử google tìm hiểu. Nếu bạn có một chút kiến thức về Dictionary của VBA thì bài viết dưới đây khá là dễ đọc. Cấu trúc file JSON thực chất là cấu trúc của một Dictionary.
File JSON nhẹ, và truy xuất kết quả nhanh nên được ưa chuộng. Lưu dữ liệu dưới file JSON sẽ cho hiệu quả cao hơn là lưu dữ liệu trong một file Excel bởi tốc độ truy xuất cực cao của nó.
Trong các ngôn ngữ khác, việc đọc một file JSON rất dễ dàng. Tôi tự hỏi VBA có thể đọc và phân tích file JSON được hay không?
Xin giới thiệu các bạn bài viết dưới đây:
==================================
Script có thể được thực thi trên VBA bằng cách sử dụng ScriptControl của đối tượng COM. Điều đó có nghĩa là bạn có thể phân tích cú pháp các tệp JSON ngay cả với VBA, phải không?
Kết quả:
Ta đã có thể truy cập nó theo cách tương tự như javascript.
Sử dụng ADODB.Stream để đọc file JSON.
Nói là file JSON, thực chất nó cũng như file txt bạn lưu dưới dạng UTF-8. Mà VBA thì đọc file txt UTF-8 quá đơn giản bằng ADODB.Stream của COM Object. Trên diễn đàn trong Box thao tác với file, các bạn tìm lại các bài về ADO sẽ thấy.
Nội dung file JSON như thế nào?
Đó, bạn hãy lưu file trên vào ổ D ( D:\json.txt ). Và bây giờ ta chạy code dưới đây :
Kết quả:
Vấn đề: Nếu bạn sử dụng từ khóa trong JSON (key) trùng với tên thuộc tính hay phương thức của VBA, thì khi biên dịch có khả năng phát sinh ra lỗi. Làm thế nào để không thay đổi tên từ khóa (key) mà không để xảy ra lỗi là điều tôi đang suy nghĩ, quả thực là hơi khó khăn ở chỗ này.
Mặc dù là VBA nhưng chúng ta đã có thể truy cập và phân tích dữ liệu từ một file JSON.
Nguồn tham khảo và dịch:
File JSON nhẹ, và truy xuất kết quả nhanh nên được ưa chuộng. Lưu dữ liệu dưới file JSON sẽ cho hiệu quả cao hơn là lưu dữ liệu trong một file Excel bởi tốc độ truy xuất cực cao của nó.
Trong các ngôn ngữ khác, việc đọc một file JSON rất dễ dàng. Tôi tự hỏi VBA có thể đọc và phân tích file JSON được hay không?
Xin giới thiệu các bạn bài viết dưới đây:
==================================
Script có thể được thực thi trên VBA bằng cách sử dụng ScriptControl của đối tượng COM. Điều đó có nghĩa là bạn có thể phân tích cú pháp các tệp JSON ngay cả với VBA, phải không?
Mã:
Sub VBA_de_JSON()
Const cnsJSONString As String = "{ ""familyname"":""yamada"", ""personalname"":""tarou"" }"
Dim sc As Object
Dim strFunc As String
Dim objJSON As Object
Set sc = CreateObject("ScriptControl")
sc.Language = "JScript"
'Chuoi ham phan tich cu phap thanh json
strFunc = "function jsonParse(s) { return eval('(' + s + ')'); }"
'Them ham
sc.AddCode strFunc
'Thuc thi ham duoc them, cat ket qua vao bien so
Set objJSON = sc.CodeObject.jsonParse(cnsJSONString)
'Hoac co the su dung code nhu duoi day
'Set objJSON = sc.Run("jsonParse", cnsJSONString)
MsgBox objJSON.familyname
Set objJSON = Nothing
Set sc = Nothing
End Sub
Bạn cần đăng nhập để thấy đính kèm
Ta đã có thể truy cập nó theo cách tương tự như javascript.
Sử dụng ADODB.Stream để đọc file JSON.
Nói là file JSON, thực chất nó cũng như file txt bạn lưu dưới dạng UTF-8. Mà VBA thì đọc file txt UTF-8 quá đơn giản bằng ADODB.Stream của COM Object. Trên diễn đàn trong Box thao tác với file, các bạn tìm lại các bài về ADO sẽ thấy.
Nội dung file JSON như thế nào?
JSON:
{
"familyname":"yamada",
"personalname":"tarou"
}
Mã:
Sub VBA_de_JSON2()
Dim sc As Object
Dim strFunc As String
Dim objJSON As Object
Set sc = CreateObject("ScriptControl")
sc.Language = "JScript"
'Chuoi ham phan tich cu phap thanh json
strFunc = "function jsonParse(s) { return eval('(' + s + ')'); }"
'Them ham
sc.AddCode strFunc
'Thuc thi ham duoc them
Set objJSON = sc.CodeObject.jsonParse(ReadUTF8Text("D:\json.txt"))
MsgBox objJSON.personalname
Set objJSON = Nothing
Set sc = Nothing
End Sub
Function ReadUTF8Text(argPath As String) As String
Dim buf As String
With CreateObject("ADODB.Stream")
.Charset = "UTF-8"
.Type = 2 'adTypeText
.LineSeparator = -1 'adCrLf
.Open
.LoadFromFile argPath
buf = .ReadText(-1) 'adReadAll
.Close
End With
ReadUTF8Text = buf
End Function
Bạn cần đăng nhập để thấy đính kèm
Vấn đề: Nếu bạn sử dụng từ khóa trong JSON (key) trùng với tên thuộc tính hay phương thức của VBA, thì khi biên dịch có khả năng phát sinh ra lỗi. Làm thế nào để không thay đổi tên từ khóa (key) mà không để xảy ra lỗi là điều tôi đang suy nghĩ, quả thực là hơi khó khăn ở chỗ này.
Mặc dù là VBA nhưng chúng ta đã có thể truy cập và phân tích dữ liệu từ một file JSON.
Nguồn tham khảo và dịch:
Bạn cần đăng nhập để thấy link