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

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

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

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

マクロ

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

Q&A

0回答

632閲覧

エクセルVBAの修正 管理画面上でチェックを入れ承認ボタンを押す

0kawa9

総合スコア6

VBA

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

マクロ

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

0グッド

0クリップ

投稿2021/10/25 05:54

編集2021/10/25 05:57

##概要
お客様の商品発送が完了したら、webサイトのポイントを発行する作業をマクロで行っております。

web管理画面で、発送が完了した注文番号にチェックを入れてポイントを承認をする。
というマクロを使っていたのですが、管理画面のリニューアルにより、マクロがエラーとなってしまいました。

##エラー箇所
原因はリニューアルにより、htmlタグが変わってしまった為だと考えられます。
マクロ初心者のため、どう修正すればよいかが分かりません。

マクロ起動時のエラー

デバッグ

エラーが起きている周辺のマクロ一部と、web上のhtmlタグの一部を貼り付けますので、
どのように修正を行えばよいかご教授いただけますと幸いです。

html

1<table class="app-sps-main-table"> 2 <thead> 3 <tr> 4       <th>ポイント</th> 5       <th>注文日時</th> 6       <th>注文番号</th> 7 <th>合計金額</th> 8 <th>決済</th> 9 <th>決済依頼</th> 10 <th>入金</th> 11 </tr> 12 </thead> 13 <tbody> 14 15 <tr> 16 <td class="--font-size-12px"> 17 <span class="app-sps-checkbox"> 18 <label> 19 <input type="checkbox" name="checkbox" value="10144971"> 20 <span class="app-sps-checkbox__square"><span></span></span> 21 </label> 22 <span>2,590P&nbsp;</span> 23 </td> 24 <td class="--align-center --font-size-12px"> 25 <p>2021/10/25<br>11:49:17</p> 26 </td> 27 28 <td class="--align-center --font-size-12px"> 29 12345 30 </td> 31 <td class="--align-right --font-size-12px"> 32 25,900円 33 </td> 34 <td class="--align-center --font-size-12px"> 35 <img src="../v202107/images/icon/ordr_ic_cad.svg" width="18" height="18" hspace="1"> 36 </td> 37 <td class="--align-center --font-size-12px"> 38 <p>---<br></p> 39 </td> 40 <td class="--align-center --font-size-12px"> 41 <img src="../v202107/images/icon/rec_ic_end2.svg" width="18" height="18" hspace="1"><img 42 src="../v202107/images/icon/rec_ic_big1.svg" width="18" height="18" hspace="1"> 43 </td> 44 </tr> 45 </tbody> 46</table> 47<!--承認ボタン--> 48<div class="app-sps-normal-contents-box-a"> 49 <div class="app-sps-normal-contents-box-a__body"> 50 <div class="space"></div> 51 <div class="--centering"> 52 <div class="--layout-col2 --width-332px"> 53 <div> 54 <button type="button" class="negative-button --width-158px" name="Submit" 55 onclick="var e = e || window.event;e.preventDefault();AppSub(2, 0);return false;"> 56 <span class="negative-button__inner"> 57 <span class="negative-button__bg"></span> 58 <span class="negative-button__icon"> 59 <span class="negative-button__icon-bg"></span> 60 <img src="../v202107/images/clear_icon.svg" width="" height="" alt=""> 61 </span> 62 <span class="negative-button__label">取 消</span> 63 </span> 64 </button> 65 </div> 66 <div> 67 <button type="button" class="positive-button --width-158px --margin-l-16px" name="Submit" 68 onclick="var e = e || window.event;e.preventDefault();AppSub(1, 0);return false;"> 69 <span class="positive-button__inner"> 70 <span class="positive-button__bg"></span> 71 <span class="positive-button__icon"> 72 <span class="positive-button__icon-bg"></span> 73 <img src="../v202107/images/confirm_icon.svg" width="" height="" alt=""> 74 </span> 75 <span class="positive-button__label">承 認</span> 76 </span> 77 </button> 78 </div> 79 </div> 80 </div> 81 <div class="space"></div> 82 </div> 83</div>

VBA

1 'ポイント承認用の画面に遷移する(1ページ目) 2 objIE.navigate "https://〇〇〇" 3 Call Wait(objIE) 4 5 order_cnt = objIE.document.getElementsByClassName("item-box")(1).getElementsByTagName("tr").Length 'リストが何個あるか調べてる 6 7 For i = 1 To order_cnt - 1 8 9 order_data = objIE.document.getElementsByClassName("item-box")(1).getElementsByTagName("tr")(i).innerHTML '全体 10 order_id = objIE.document.getElementsByClassName("item-box")(1).getElementsByTagName("tr")(i).getElementsByTagName("td")(2).innerText 'ID 11 order_st = objIE.document.getElementsByClassName("item-box")(1).getElementsByTagName("tr")(i).getElementsByTagName("td")(5).innerText 'ステータス(キャンセルかどうか) 12 order_check = objIE.document.getElementsByClassName("item-box")(1).getElementsByTagName("tr")(i).getElementsByTagName("input")(0) 'チェックボックス 13 14 Data.Cells(i + rMaxRow, 1).Value = order_id 15 16 If InStr(order_st, "キャンセル") = 0 Then 17 18 Result = Filter(checkList, order_id) 19 20 If UBound(Result) <> -1 Then 21 objIE.document.getElementsByClassName("item-box")(1).getElementsByTagName("tr")(i).getElementsByTagName("input")(0).Checked = True 22 Data.Cells(i + rMaxRow, 2).Value = "承認済み" 23 Else 24 Data.Cells(i + rMaxRow, 2).Value = "未承認" 25 26 End If 27 28 Else 29 Data.Cells(i + 1, 2).Value = "未承認" 30 31 End If 32 33 34 Next 35 36 For Each Button In objIE.document.getElementsByClassName("item-box")(2).getElementsByTagName("input") '承認ボタン 37 If Button.Value = "承認する" Then 38 Button.Click 'ボタンをクリックして 39 Call Wait(objIE) 40 Exit For '繰り返し処理を抜ける 41 End If 42 Next 43 44 'ポイント承認用の画面に遷移する(2ページ目) 45 objIE.navigate "https://〇〇〇?page=2" 46 Call Wait(objIE) 47 48 order_cnt = objIE.document.getElementsByClassName("item-box")(1).getElementsByTagName("tr").Length 49 50 For i = 1 To order_cnt - 1 51 52 order_data = objIE.document.getElementsByClassName("item-box")(1).getElementsByTagName("tr")(i).innerHTML 53 order_id = objIE.document.getElementsByClassName("item-box")(1).getElementsByTagName("tr")(i).getElementsByTagName("td")(2).innerText 54 order_st = objIE.document.getElementsByClassName("item-box")(1).getElementsByTagName("tr")(i).getElementsByTagName("td")(5).innerText 55 order_check = objIE.document.getElementsByClassName("item-box")(1).getElementsByTagName("tr")(i).getElementsByTagName("input")(0) 56 57 Data.Cells(i + rMaxRow, 1).Value = order_id 58 59 If InStr(order_st, "キャンセル") = 0 Then 60 61 Result = Filter(checkList, order_id) 62 63 If UBound(Result) <> -1 Then 64 objIE.document.getElementsByClassName("item-box")(1).getElementsByTagName("tr")(i).getElementsByTagName("input")(0).Checked = True 65 Data.Cells(i + rMaxRow, 2).Value = "承認済み" 66 Else 67 Data.Cells(i + rMaxRow, 2).Value = "未承認" 68 69 End If 70 71 Else 72 Data.Cells(i + 1, 2).Value = "未承認" 73 74 End If 75 76 77 Next 78 79 For Each Button In objIE.document.getElementsByClassName("item-box")(2).getElementsByTagName("input") 80 If Button.Value = "承認する" Then 81 Button.Click 'ボタンをクリックして 82 Call Wait(objIE) 83 Exit For '繰り返し処理を抜ける 84 End If 85 Next 86 87 Next 88 89 Next 90 91 objIE.Quit 92 93End Sub

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問