I yorum yapma yetkisine sahip değilim, ancak bu, Parfait'in çözümüne yönelik küçük bir öneridir.Jsonconverter eksik olduğu için kodu yürütme konusunda sorun yaşadım Parfait'ten gelen adımları izlerseniz, JsonConverter'i Access VBA'da bir Modül olarak dahil ettiğinizden emin olun. Sen VBA-JSON sağlanan Excel dosyasındaki bu Modülü bulabilirsiniz
Erişimi altında VBA-JSON yüklemek için şu adımları izleyin:.
- Modüller olarak Yükleme Türleri (İçe Aktar ..)
- Açık Excel, + F11 Alt vurmak, açık Modül JSONConverter, bütün (STRG + A, STRG + C)
- OpenAccess kopyalayın adlandırın JsonConverter, bütün Kodu (ctrl Yapıştır, Alt + F11, yeni modülü oluştur vurmak + V)
- Referans Microsoft Scripting çalışma zamanı kodunuzda
, parseJSON bulunmazsa, bu başvuruyu kullanın:
Dim p As Object
Set p = JSonConverter.ParseJson(jsonStr)
Bu benim tam kodu:
Public Sub import()
''''CREATE TABLE START''''
Dim myTable As TableDef
Set myTable = CurrentDb.CreateTableDef(tablename)
myTable.Fields.Append myTable.CreateField("col1", dbText)
myTable.Fields.Append myTable.CreateField("col2", dbText)
myTable.Fields.Append myTable.CreateField("col3", dbText)
myTable.Fields.Append myTable.CreateField("col4", dbDate)
myTable.Fields.Append myTable.CreateField("col5", dbText)
CurrentDb.TableDefs.Append myTable
Application.RefreshDatabaseWindow
''''CREATE TABLE END''''
JSONImport path + myfile, tablename
End Sub
Public Sub JSONImport(ByVal path_file As String, ByVal tablename As String)
Dim db As Database, qdef As QueryDef
Dim FileNum As Integer
Dim DataLine As String, jsonStr As String, strSQL As String
Dim element As Variant
Set db = CurrentDb
' READ FROM EXTERNAL FILE
FileNum = FreeFile()
Open path_file For Input As #FileNum
' PARSE FILE STRING
jsonStr = ""
While Not EOF(FileNum)
Line Input #FileNum, DataLine
jsonStr = jsonStr & DataLine & vbNewLine
Wend
Close #FileNum
Dim p As Object
Set p = JSonConverter.ParseJson(jsonStr)
' ITERATE THROUGH DATA ROWS, APPENDING TO TABLE
For Each element In p
strSQL = "PARAMETERS [col1] Text(255), [col2] Text(255), [col3] Text(255), [col4] Date, [col5] Text(255); " _
& "INSERT INTO " & tablename & "(col1, col2, col3, col4, col5) VALUES ([col1], [col2], [col3], [col4], [col5]);"
Set qdef = db.CreateQueryDef("", strSQL)
qdef!col1 = element("fullname")
qdef!col2 = element("id")
qdef!col3 = element("text")
qdef!col4 = CDate(Replace(element("timestamp"), "T", " "))
qdef!col5 = element("user")
qdef.Execute
Next element
'Rename Fields
Dim fld As DAO.Field
Dim tdf As DAO.TableDef
Set tdf = db.TableDefs(tablename)
Set fld = tdf.Fields("col1")
fld.Name = "fullname"
Set fld = tdf.Fields("col2")
fld.Name = "id"
Set fld = tdf.Fields("col3")
fld.Name = "text"
Set fld = tdf.Fields("col4")
fld.Name = "timestamp"
Set fld = tdf.Fields("col5")
fld.Name = "user"
db.Close
Set db = Nothing
Set fld = Nothing
Set tdf = Nothing
Set element = Nothing
Set p = Nothing
Set qdf = Nothing
End Sub
Benim JSON yapısı:
{
"fullname": "Henry Timor",
"id": "141217245735560741",
"text": "How must it feel to know you have lost.",
"timestamp": "2015-07-22T05:45:06",
"user": "henry_t"
}
Ayrıca buradan JSON modüllerini göz olabilir: https://github.com/CactusData/VBA.CVRAPI ... verileri tutmak için koleksiyonları kullanılarak. Biraz zaman alıyor ama VBA ve JSON birbirleri için yapılmıyor - basit veya akıllı çözümler yok. – Gustav
Eğer var gibi bazı örnek JSON paylaşabilir ve DB tablo (ler) sonucu almak istiyorum sonuçlanan olabilir mi? [Bu yöntem] (http://stackoverflow.com/a/30494373/2165759) da düşünün. – omegastripes
Sorunuz, VBA ile rahat olmadığınızı ima ediyor, ben de yanılıyor muyum? –