Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 在VBA中用引号生成大字符串_Json_Excel_Vba - Fatal编程技术网

Json 在VBA中用引号生成大字符串

Json 在VBA中用引号生成大字符串,json,excel,vba,Json,Excel,Vba,我需要在VBA中构建一个带有引号的大字符串(json) 我尝试过这种方法: Dim payload As String payload = "" payload = payload & CHR(34) & {"timeframeId":13,"startDate":"2021-05-31 00:00:00.000","endDate":"2021-05-31 00:00:

我需要在VBA中构建一个带有引号的大字符串(json)

我尝试过这种方法:

Dim payload As String
payload = ""
payload = payload & CHR(34) & {"timeframeId":13,"startDate":"2021-05-31 00:00:00.000","endDate":"2021-05-31 00:00:00.000","peopleList":[{"id":123}], & CHR(34)
...more lines building string
但是Excel IDE for VBA抱怨语法错误——可能与带引号的字符串有关

我是否需要在“每个”的“开始”和“结束”之前添加CHR(34)?

Al Grant

Chr(39)或“双引号char”是VBA的文本限定符,因此需要对字符串进行调整

我假定您在工作表中的任何位置都有此值。 因此,通常的方法是设置范围并使用replace替换另一个字符,然后返回到chr(39)

如果要在硬代码中输入什么,则每次出现双引号时都需要将chr(39)连接起来,或者使用“”

但最简单的方法是将find和replace(CTRL+H)替换为另一个字符,并继续像以前那样进行开发

Dim payload As String
payload = payload & Chr(34) & Replace("{'timeframeId':13,'startDate':'2021-05-31 00:00:00.000','endDate':'2021-05-31 00:00:00.000','peopleList':[{'id':123}],", Chr(39), Chr(34)) & Chr(34)

Debug.Print payload
结果:
“{”timeframeId“:13,“startDate:“2021-05-31 00:00:00.000”,“endDate:“2021-05-31 00:00:00.000”,“peopleList:[{”id“:123}],”

负载正在发送到另一台服务器-我不确定它是否接受“而不是”“-我会测试并让您知道。无论如何,如果不是硬编码更容易,只需指向所需的范围。您只需在引号中用额外的双引号转义双引号。例如
payload&“{”“timeFrameID”“:13”“startDate”“;”“2021-05-31 00:00:00.000”“…}”
必须有更好的方法在VBA中构建大型json字符串。目前看起来很混乱!确实有。但这就是您展示的内容,也是您的问题所在。在Excel中,我将介绍如何将对象(字典/集合/数组)转换为json字符串