質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

HttpWebRequest

HttpWebRequestとは.NETにおけるクラスであり、WebRequestクラスをHTTPに導入するものです。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

0回答

2059閲覧

yahooショッピングAPIをエクセル(VBA)に適用するときのエラーで困っています

orionboy75

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

HttpWebRequest

HttpWebRequestとは.NETにおけるクラスであり、WebRequestクラスをHTTPに導入するものです。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/08/27 07:53

編集2021/08/29 09:35

前提・実現したいこと

VBA(エクセル)でYahooの商品画像を削除するような
エクセルアプリをつくっています。
リフレッシュトークンを取得するときにはエラーにならないですが、
本番のURLへメッセージを送るとエラーになります。
解決方法やアドバイスお願いいたします。

<環境>
EXCEL2016, Windows10

発生している問題・エラーメッセージ

OBJECT:MSXML2.ServerXMLHTTP.6.0 実行時エラー'-2147012711(80072f99)': クライアント証明書で資格情報が使用できませんでした。 OBJECT:WinHttp.WinHttpRequest.5.1 実行時エラー'-2146697208(800c0008)': 指定されたリソースのダウンロードに失敗しました。

該当のソースコード

vba

1Function httpPost2(url As String, msg As String, auth As Variant, Optional token As String = False) As String 2' Const WinHttpRequestOption_SslErrorIgnoreFlags As Long = &H4& 3' Const SslErrorFlag_UnknownCA As Long = &H100& 4' Const SslErrorFlag_CertCNInvalid As Long = &H1000& 5 6' Dim flag As Long 7' Dim lngSslErrorIgnoreFlags As Long 8' Dim blnEnableRedirects As Boolean 9' Dim blnEnableHttpsToHttpRedirects As Boolean 10 11' lngSslErrorIgnoreFlags = &H3300 '13056(&H3300): ignore all err, 0: accept no err 12' blnEnableRedirects = True 13' blnEnableHttpsToHttpRedirects = True 14 15 Dim objHTTP As Object 16 17 auth = Replace(auth, vbLf, "") 18 auth = Replace(auth, vbCrLf, "") 19 20'On Error GoTo ERROR_ 21 22' Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") 23 Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP.6.0") 24 25 objHTTP.Open "POST", url, False 26' objHTTP.setRequestHeader "Host", "circus.shopping.yahooapis.jp" 27 objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 28 objHTTP.setRequestHeader "Authorization", auth 29 30' 'SSLエラーを無視するかどうかを決めるフラグ。 31' '初期値は0(エラーを無視しない)。 32' flag = objHTTP.Option(WinHttpRequestOption_SslErrorIgnoreFlags) 33' flag = flag Or SslErrorFlag_UnknownCA 34' flag = flag Or SslErrorFlag_CertCNInvalid 35' 36' objHTTP.Option(WinHttpRequestOption_SslErrorIgnoreFlags) = flag 37' objHTTP.setOption(0) = strUserAgentString 38' objHTTP.setOption(2) = lngSslErrorIgnoreFlags 39' objHTTP.setOption(6) = blnEnableRedirects 40' objHTTP.setOption(12) = blnEnableHttpsToHttpRedirects 41 42 objHTTP.send msg 'ここがエラーになります。 43 44 If objHTTP.Status = 200 Then 45 httpPost2 = objHTTP.ResponseText 46 Debug.Print "TRUE : " & objHTTP.Status & " / " & objHTTP.statusText 47 Exit Function 48 Else 49 Debug.Print "FALSE : " & objHTTP.Status & " / " & objHTTP.statusText 50 End If 51 52- 省略 - 53 54End Function

試したこと

SSLの認証問題と思い、回避する方法をネットで調べてほぼ全部試してみました。
0. 参照するオブジェクトを「MSXML2.ServerXMLHTTP.6.0、WinHttp.WinHttpRequest.5.1」して両方試してみました。
0. 証明書認証の問題だと思いSSLを無視するflagを使ってみました。
0. 送信メソッドの問題だと思い、POSTをGETに変更して試してみました。
0. PHPではどうかなと思いPHPで同じく試してみたところ、PHPは問題なく動きます。
VBAで生成されたaccess_tokenを使ってPHPでテストしてみても問題ないです。

補足情報(参考にしたページ)

https://developer.yahoo.co.jp/webapi/shopping/deleteItemImage.html

サンプルリクエストURL
https://circus.shopping.yahooapis.jp/ShoppingWebService/V1/deleteItemImage

サンプルリクエスト
POST /ShoppingWebService/V1/deleteItemImage HTTP/1.1
Host: circus.shopping.yahooapis.jp
Authorization: Bearer <アクセストークン>

seller_id=teststore&image_id=teststore_sample1%2Cteststore_sample2%2Cteststore_sample3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問