VBAで-1072896658というエラーが出て困ったのでメモ
エラーは突然?
httpリクエストを実装しているVBAで、
ある日突然htmlを取得しようとするとエラーとなり、
困ったのでメモ。
原因
responseText はダメということが、デバッグで止まっているので、
タブーな取得方法のようです。
Set XmlHttp = CreateObject("MSXML2.XMLHTTP")
With XmlHttp
.Open "POST", Url, False
.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.Send Param
resTxt = .ResponseText
resStatus = .Status
End With
対処方法
ほとんどの場合は responseText を responseBody に変えることで解決するようですが、
文字コードがサーバーサイドで依存している場合は文字化けするので、
対応する必要があるようです。(エクセルではSJISです)
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.Open "POST", Url, False
objXMLHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objXMLHTTP.Send Param
strResult = objXMLHTTP.responseBody
resStatus = objXMLHTTP.Status
' 文字コード変換された文字列を抽出
Set stm = CreateObject("ADODB.Stream")
stm.Type = 1 'バイナリモード
stm.Open
stm.Write strResult 'バイナリを書き込み
stm.Position = 0 '先頭に戻してから
stm.Type = 2 'テキストモードに変更
stm.Charset = "UTF-8" '取得したい文字コードをセット
strResult = stm.ReadText
stm.Close