エクセルでWebAPI呼んだりSOAP通信する際にHTTP通信を下の感じでやる。

'Getはこっち
Function HTTPGet() As String
    Dim httpObj As Object
    Set httpObj = CreateObject("MSXML2.XMLHTTP")
    
    httpObj.Open "GET", "http://hoge.fuga.com/someapi", False
    httpObj.setRequestHeader "Content-Type", "text/xml;charset=UTF-8"
    httpObj.send
    HTTPGet = httpObj.responseText
End Function

'Postはこっち
Function HTTPPost() As String
    Dim httpObj As Object
    Set httpObj = CreateObject("MSXML2.XMLHTTP")
    
    httpObj.Open "POST", "http://hoge.fuga.com/someapi", False
    httpObj.setRequestHeader "Content-Type", "text/xml;charset=UTF-8"
    httpObj.send "何かのデータ"
    HTTPPost= httpObj.responseText
End Function

HTTPの場合はこれで問題ないんだけど、HTTPSでやる場合はちょっと変える。 てか、変えなくてもまともな証明書(ベリサインとかから買ってるやつ)使ってる場合は 多分大丈夫。

てきとーにその辺のツールで作ったやつとか、いわゆるオレオレ証明書使う場合は、 上述のやつだとエラーになる。ブラウザとかで繋いだ時もセキュリティーの警告とか出るけど、 VBAだとエラー扱いになるっぽい。この場合は↓の感じにする。

'Getはこっち
Function HTTPSGet() As String
    Dim httpObj As Object
    Set httpObj = CreateObject("MSXML2.ServerXMLHTTP") '使うのはServerXMLHTTP
    
    httpObj.Open "GET", "https://hoge.fuga.com/someapi", False
    httpObj.setRequestHeader "Content-Type", "text/xml;charset=UTF-8"
    '証明書関係のエラーを無視する?オプション
    httpObj.setOption 2, httpObj.getOption(2) - SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS
    httpObj.send
    HTTPSGet= httpObj.responseText
End Function
'Postはこっち
Function HTTPSPost() As String
    Dim httpObj As Object
    Set httpObj = CreateObject("MSXML2.ServerXMLHTTP") '使うのはServerXMLHTTP
    
    httpObj.Open "POST", "https://hoge.fuga.com/someapi", False
    httpObj.setRequestHeader "Content-Type", "text/xml;charset=UTF-8"
    '証明書関係のエラーを無視する?オプション
    httpObj.setOption 2, httpObj.getOption(2) - SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS
    httpObj.send "何かのデータ"
    HTTPSPost = httpObj.responseText
'    XMLで戻ってくるやつはこっちの方がいいかな
'    HTTPSPost= httpObj.responseXML
End Function

参考は例によってさすがのStackOverFlow

クライント側に使う証明書をインストールしておけば、最初の奴でも大丈夫かもかも。。。