前提
エクセルVBA初心者です。
アリエクスプレスというサイトの在庫管理ツールを作成しています。
複数商品のURLがA列にズラッと並んでいて、
それを一つずつブラウザで開き在庫があるかを判別するイメージです。
在庫がある場合はB列に「在庫あり」、ない場合は「在庫なし」と入力されます。
在庫があるかどうかは、商品ページの「今すぐ購入」というボタンが存在するかどうかで判別するようにしています。
在庫がない場合はエラーが起こり、エラーが起こった時に例外処理で「在庫なし」と入力されるようにしたいです。
質問はループの中でのエラー処理で躓いています。
該当のソースコードを動かすと、「在庫なし」と判断されるべきページでも「在庫あり」と記入されてしまいます。
試した範囲では全てのページで在庫ありと判断されてしまいました。
ソースコードの中のエラー処理の「Resume Next」をなくした場合は正確に在庫の有無を判定してくれたのですが、
在庫がなかった商品でツールの駆動が完了してしまいます。
参考までにサンプルの商品ページのURLも載せておきます。
実現したいこと
在庫の有無を正確に判別したいです。
発生している問題・エラーメッセージ
エラーは特には出ていないです。
該当のソースコード
VBA
1Sub test() 2 3Dim driver As New Selenium.WebDriver 4Dim i As Long 5 6SafeOpen driver, Chrome 7 8With ThisWorkbook.Worksheets("アリエク在庫管理") 9 10For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row 11 12 driver.Get .Range("A2").Offset(i - 1, 0) 13 14 driver.FindElementByCss("#root > div > div.product-main > div > div.product-info > div.product-action > span.buy-now-wrap > button").Text 15 16 On Error GoTo myError 17 Worksheets("アリエク在庫管理").Cells(1 + i, 2) = "在庫あり" 18 19Next 20 21 Exit Sub 22myError: 23 Worksheets("アリエク在庫管理").Cells(1 + i, 2) = "在庫切れ" 24Resume Next 25 26End With 27End Sub
試したこと
VBAでループ時のエラー処理について調べましたが、なかなか思ったような情報にたどり着けなかったので質問させて頂きました。
補足情報(FW/ツールのバージョンなど)
Windows10
chrome

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/27 09:16