前提・実現したいこと
ebayの商品リサーチを行う前に、ExcelのVBAを使用して位置情報を事前に設定しようとしております。
(1)ebayの商品ページを開く
(2)「Shipping and payments」をクリックする
(3)「Change country: 」に「United States」を、「ZIP Code: 」に「90024」を入力する
(4)「Get Rates」をクリックする
という一連の動作を自動で行おうとしているのですが...
発生している問題・エラーメッセージ
商品ページの中には、稀に「This listing was ended by the seller because the item is no longer available.(商品がなくなったのでこの項目は取り下げられました)」というようなエラーメッセージが記載されているページがあり、この場合、(2)~(4)の動作を行うためには、一度「See original listing(元の項目を閲覧する)」をクリックし、元の商品ページに移動する必要があります。
(例)https://www.e■■■bay.com/c/28030310275#oid273544047936
※上記のURLをコピペする際は、「■■■」の削除をお願いいたします。
また、このエラーメッセージとリンクのテキストには、以下のような組み合わせがあります。
html
1<div id="msgPanel" ... >This listing was ended by the seller because the item is no longer available.< 2 3 <div class="vi-inl-lnk vi-cvip-prel3" ... >See original listing< 4 5 <div class="vi-inl-lnk vi-cvip-prel5" ... >See original listing< 6 7id="msgPanel" ... >This listing was ended by the seller because there was an error in the listing.< 8 9 <div class="vi-inl-lnk vi-cvip-prel3" ... >See original listing< 10 11 <div class="vi-inl-lnk vi-cvip-prel5" ... >See original listing< 12 13<div class="nodestar-item-card-details__header-text" ... >The listing you're looking for has ended.< 14 15 <div class="nodestar-item-card-details__view" ... >View original item< 16 17<div class="itemcard--content" ... >The listing you're looking for has ended.< 18 19 <div class="fake-btn fake-btn--large fake-btn--fluid" ... >View original item< 20
試したこと
例えば、
VBA
1 2'id="msgPanel"という要素のテキスト部分をA1セルに入力 3 4Range("A1").Value = ie.document.getElementById("msgPanel").outerText 5 6 'A1セルに「This listing was ended...」という文字列が含まれているかチェック 7 8 If InStr(Range("A1").Value, "This listing was ended by the seller because the item is no longer available.") > 0 Then 9 10 '含まれていれば、class="vi-inl-lnk vi-cvip-prel3"という要素の直下にあるaタグのテキスト部分をA1セルに入力 11 12 Range("A1").Value = ie.document.getElementsByClassName("vi-inl-lnk vi-cvip-prel3")(0).all.tags("a")(0).outerText 13 14 'A1セルに「See original listing」という文字列が含まれているかチェック 15 16 If InStr(Range("A1").Value, "See original listing") > 0 Then 17 18 '含まれていれば、そのリンクをクリック 19 20 ie.document.getElementsByClassName("vi-inl-lnk vi-cvip-prel3")(0).all.tags("a")(0).Click 21 22 Else 23 24 '含まれていなければ、class="vi-inl-lnk vi-cvip-prel5"という要素の直下にあるaタグのテキスト部分をA1セルに入力 25 26 Range("A1").Value = ie.document.getElementsByClassName("vi-inl-lnk vi-cvip-prel5")(0).all.tags("a")(0).outerText 27 28 'A1セルに「See original listing」という文字列が含まれているかチェック 29 30 If InStr(Range("A1").Value, "See original listing") > 0 Then 31 32 '含まれていれば、そのリンクをクリック 33 34 ie.document.getElementsByClassName("vi-inl-lnk vi-cvip-prel5")(0).all.tags("a")(0).Click 35 36 End If 37 38 End If 39 40 End If 41 42End If 43 44'商品ページに直接行けたにしろ、エラーページを経由する必要があったにしろ、最終的に以下の作業を行いたいと思っております。 45 46'ページ中部の「Shipping and payments」をクリックする 47ie.document.getElementById("viTabs_1").Click 48Application.Wait Now + TimeValue("00:00:05") 49 50'「Change country: 」に「United States」、「ZIP Code: 」に「90024」を入力し、「Get Rates」をクリックする 51ie.document.getElementById("shCountry").Value = "1" 52ie.document.getElementById("shZipCode").Value = "89106" 53ie.document.getElementById("shGetRates").Click 54Application.Wait Now + TimeValue("00:00:05") 55
というようなとても回りくどいコードを試しており、一応は機能しているのですが、できればもう少し簡略化したいと思っております。ご助力のほど、何卒よろしくお願い申し上げます。
補足情報(FW/ツールのバージョンなど)
Excel2016、Windows10、IE11
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。