首页 > 解决方案 > 使用 vba 发送对象(json)

问题描述

我正在尝试使用 vba 在 Outlook 中发送 json 对象。这是我的代码:

Dim Msg As Outlook.MeetingItem
Set Msg = Item
Set recips = Msg.Recipients
Dim regEx As New RegExp
regEx.Pattern = "^\w+\s\w+,\sI351$"
Dim URL As String
URL = "https://webhook.site/55759d1a-7892-4c20-8d15-3b8b7f1bf3b3"

For Each recip In recips
    If regEx.Test(recip.AddressEntry) And recip.AddressEntry <> "Application Management Linux1, I351" Then
        Dim convertedJson As Object
        Set convertedJson = JsonConverter.ParseJson("{""fields"": 123}")
        Set xhr = CreateObject("MSXML2.ServerXMLHTTP.6.0")
        xhr.Open "POST", URL, False
        xhr.setRequestHeader "Content-Type", "application/json"
        xhr.Send (convertedJson)
    End If
Next

如果我只发送平面文本,效果很好,但我不能发送convertedJson。是否可以发送对象?

更新

我什至做不到Debug.Print convertedJson

在此处输入图像描述

标签: vbaoutlook

解决方案


我被这些图书馆折磨到最后我做了一件非常可怕的事情

Dim flds, prt, id, smry, descrp, issu, name, lfbrkt, rtbrkt, cma, dbdots, jsTest, issuName As String
flds = "'fields'"
prt = "'project'"
id = "'id'"
smry = "'summary'"
descrp = "'description'"
issu = "'issuetype'"
issuName = "'Improvement'"
name = "'name'"
lfbrkt = "{"
rtbrkt = "}"
cma = ","
dbdots = ":"
jsTest = lfbrkt + flds + dbdots + " " + lfbrkt + vbCrLf + vbTab + prt + dbdots + " " + lfbrkt + vbCrLf + vbTab + vbTab + id + dbdots + " " + "30611" + vbCrLf + vbTab + rtbrkt + cma + vbCrLf + vbTab + smry + dbdots + " " + "'" + CStr(Msg.Subject) + "'" + cma + vbCrLf + vbTab + descrp + dbdots + " " + "'" + CStr(Msg.Body) + "'" + cma + vbCrLf + vbTab + issu + dbdots + " " + lfbrkt + vbCrLf + vbTab + vbTab + name + dbdots + " " + issuName + vbCrLf + vbTab + rtbrkt + vbCrLf + rtbrkt + rtbrkt

我得到了这个

在此处输入图像描述


推荐阅读