在VBA中拼接含双引号的大型JSON字符串的语法问题
VBA构造含双引号的JSON字符串解决方案
错误原因
你现有代码的语法错误来自两个问题:
- 你直接将JSON结构
{...}放在拼接逻辑中,没有将其包裹为VBA可识别的字符串字面量 - JSON本身包含的双引号会被VBA识别为字符串结束标记,打断原有语法
双引号处理方案
不需要强制在所有双引号前后加Chr(34),有两种常用处理方式:
方式1:VBA字面量双引号转义(更适合大段JSON)
VBA的字符串字面量规则中,连续写2个双引号,会被识别为字符串内容本身的1个双引号,不需要拼接Chr(34),写法更简洁:
Dim payload As String payload = "{""timeframeId"":13,""startDate"":""2021-05-31 00:00:00.000"",""endDate"":""2021-05-31 00:00:00.000"",""peopleList"":[{""id"":123}]}"
如果JSON体积大,可以拆分多行拼接,避免VBA单行长度限制:
Dim payload As String payload = "" payload = payload & "{""timeframeId"":13," payload = payload & """startDate"":""2021-05-31 00:00:00.000""," payload = payload & """endDate"":""2021-05-31 00:00:00.000""," payload = payload & """peopleList"":[{""id"":123}]}"
方式2:使用Chr(34)拼接
如果偏好使用Chr(34)代表双引号,需要把所有JSON中的双引号都替换为Chr(34)的拼接逻辑,示例如下:
Dim payload As String payload = "{" & Chr(34) & "timeframeId" & Chr(34) & ":13," & Chr(34) & "startDate" & Chr(34) & ":" & Chr(34) & "2021-05-31 00:00:00.000" & Chr(34) & "}"
额外建议
如果需要频繁构造JSON,建议引入成熟的VBA JSON解析库,直接通过字典/数组对象生成JSON,不需要手动处理字符串转义,出错概率更低。
内容的提问来源于stack exchange,提问作者Al Grant
相关产品推荐
相关产品推荐

