我使用VBA的访问访问使用API的电影信息。它工作正常,但我有一个属性的问题,作为名称单词“名称”这是一个保留字。访问VBA保留字“名”
比方说,我要访问的生产企业。我使用这个代码,它工作正常,如果我想要得到的ID,但如果我想获得的名字因为“名”是行保留字不工作4
有没有人有一个想法如何解决它?
工作代码:
Set Keys1 = VBA.CallByName(jsonDecode1, "production_companies", VbGet)
movie_companies = ""
For Each Key In Keys1
movie_companies = movie_companies & **key.id** & ","
Next
的不工作代码:
Set Keys1 = VBA.CallByName(jsonDecode1, "production_companies", VbGet)
movie_companies = ""
For Each Key In Keys1
movie_companies = movie_companies & **Key.Name** & ","
Next
JSON文件:
production_companies: [ { name: "France 2 Cinéma", id: 83 }, { name: "SBS Productions", id: 8997 }, { name: "Les Films Français", id: 16782 } ],
谢谢您的回复,但我需要给你我正在做的更多细节。是的,我用一个集合,但我并没有创造它我只是导入使用API数据确实从网站收集,我也想,让你知道,所有其他属性工作正常除“名称”可能是因为编辑大写单词“名称”的第一个字母自动,但它不大写换句话说,如何避免大写单词“名”的编辑也许这就是问题。再次感谢您
这就是全部的代码:
Set sc = CreateObject("ScriptControl"): sc.language = "JScript"
Set oXMLHTTP1 = CreateObject("MSXML2.XMLHTTP")
oXMLHTTP1.Open "GET", URL, False 'Open socket to get the website
oXMLHTTP1.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
oXMLHTTP1.send 'send request
Do While oXMLHTTP1.ReadyState <> 4
DoEvents
Loop
oResp = oXMLHTTP1.responseText 'Returns the results as a byte array
Set jsonDecode1 = sc.Eval("(" + oResp + ")")
Set Keys1 = VBA.CallByName(jsonDecode1, "production_countries", VbGet)
For Each Key In Keys1
movie_companies = movie_companies & Key.id & ","
movie_companies = movie_companies & Key.Name & ","
Next
现在,我相信这个问题是一个事实,即第一个字母是大写的,因为我有一个名为“钥匙”的另一个属性和因为有编辑的变化它与大写K键“关键”,它不工作太:)有没有办法禁用更改代码编辑器中的第一个字母大写?这肯定会解决这个问题
1.什么是错误信息? 2.尝试密钥(“名称”) 3.结果? – peakpeak
尝试在方括号中包装名称。类似于Key。[Name]更多信息[在此](https://support.office.com/zh-cn/article/Access-2007-reserved-words-and-symbols-E33EB3A9-8BAA-4335-9F57-DA237C63EABE ) – jcarroll
我试了两个我得到了同样的错误,执行错误438对象不支持此属性或方法 –