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

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

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

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

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

8361閲覧

VBAからIEを操作し、セレクトボックスに値を入力反映させたい

jft

総合スコア10

VBA

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

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2018/11/29 04:52

編集2018/11/29 07:02

前提・実現したいこと

VBAからIEを操作し、webページ上のセレクトボックスに値を入力し、反映させたいです。
セレクトボックスに.valueで値を入れ、画面上は反映されます。
しかし、確定ボタン押下し、入力内容を確認する画面に遷移した後、セレクトボックスに入れた値は反映されていません。

ちなみに、VBAからではなく、手で入力した際は問題はありません。
「何かしらのイベントが発生しているのでは」と思うのですが、ソースからは特定できない状況です・・・。

初心者故に、提供情報が漏れているかもしれませんが、どうぞよろしくお願い致します。

[20181129追記_1]
・VBAのコード、HTMLのコードを一部追記

該当のソースコード

vba

1 2Sub bulklist() 3 4'情報入力ページにアクセスする 5 Dim objIE As Object 'IEオブジェクトを準備 6 Set objIE = CreateObject("Internetexplorer.Application") 7 objIE.Visible = True 'IEを表示 8 objIE.navigate "URL(省略)" 'IEでURLを開く 9 Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE '読み込み待ち 10 DoEvents 11 Loop 12 13'入力ページでHTMLオブジェクトをセット 14 Dim htmlDoc2 As HTMLDocument 'HTMLドキュメントオブジェクトを準備 15 Set htmlDoc2 = objIE.document 'objIEで読み込まれているHTMLドキュメントをセット 16 17'セレクトボックスに値を入れる 18 Dim elinput_othershipping_1 As IHTMLElement 19 Set elinput_othershipping_1 = htmlDoc2.getElementById("auc_shipname_standard1") 20 21 elinput_othershipping_1.Value = "レターパックプラス" 22 waitTime = Now + TimeValue("0:00:03") 23 Application.Wait waitTime 24 25'途中省略 26 27'確認画面へ 28 Dim elinput_submit As IHTMLElement 29 Set elinput_submit = htmlDoc2.getElementById("auc_submit2") 30 elinput_submit.Click 31 32End sub

html

1'該当箇所省略 2 3<div id="auc_shipname_block1" class="modSubTable03 other_ship_block "> 4 <dl class="untInr"> 5 <dt class="ptsHead"><span>配送方法1</span></dt><!-- /.ptsHead --> 6 <dd class="ptsDtl"> 7 <span class="decFormTxtBox"> 8 <select id="auc_shipname_standard1" class="standardShipnameJs"> 9 10 <option value="" class="arrival cod">配送方法を選択してください</option> 11 <option value="定形郵便" class="cod">定形郵便</option> 12 <option value="定形外郵便" class="cod">定形外郵便</option> 13 <option value="レターパックプラス" class="">レターパックプラス</option> 14 <option value="レターパックライト" class="">レターパックライト</option> 15 <option value="ゆうパック" class="arrival cod">ゆうパック</option> 16 <option value="ゆうメール" class="arrival cod">ゆうメール</option> 17 <option value="宅急便(ヤマト運輸)" class="arrival">宅急便(ヤマト運輸)</option> 18 <option value="飛脚宅配便(佐川急便)" class="arrival cod">飛脚宅配便(佐川急便)</option> 19 <option value="飛脚メール便(佐川急便)" class="">飛脚メール便(佐川急便)</option> 20 <option value="クリックポスト" class="">クリックポスト</option> 21 <option value="カンガルー便(西濃運輸)" class="arrival">カンガルー便(西濃運輸)</option> 22 <option value="other" class="arrival">その他</option> 23 </select> 24 <div id="auc_shipname_org1" style="display:none"></div> 25 26 <input id="auc_shipname1" type="text" name="shipname1" value="定形郵便" size="40" maxlength="30" placeholder="フリー入力(例:手渡しなど)" style="display:none;"> 27 <span id="auc_shipname_text_counter1" style="display:none;">(残り<a id="auc_shipname1_length">15</a>文字)</span> 28 <div id="decTxNameErr1"> 29 30 </div> 31 </span> 32 </dd><!-- /.ptsDtl --> 33 34 <dt class="ptsHead paidByBuyerJs" id="shipfee_label1">送料全国一律</dt><!-- /.ptsHead --> 35 <dd class="ptsDtl paidByBuyerJs" id="shipfee_input1"> 36 <div id="set_shipping"> 37 <span class="decFormTxtBox"> 38 <input type="text" size="5" id="auc_shipname_uniform_fee_data1" name="shipfee1" value="220" onChange="toHankaku(this)"> 39 <span class="elLbYen"></span> 40 </span><!-- /.decFormTxtBox --> 41 42 <span class="decFormCheck"> 43 <input type="checkbox" id="auc_longdistshipping1" name="longdistshipping1" value="1" class="auc_longdistshippingJs"> 44 <label for="auc_longdistshipping1">北海道、沖縄、離島は別料金を設定する</label> 45 </span><!-- /.decFormCheck --> 46 </div><!-- /#set_shipping --> 47 48 <div id="decTxFeeErr1"> 49 50 </div> 51 <div class="WarningBox WarningBox--small" id="auc_shippingfee_auto_setting1" style="display: none;"> 52 <p class="WarningBox__text"></p> 53 </div> 54 <div class="WarningBox WarningBox--small" id="auc_shippingfee_auto_removing1" style="display: none;"> 55 <p class="WarningBox__text">北海道、沖縄、離島料金の設定はできません。</p> 56 </div> 57 58 <div id="shippingException1" style="display:none"> 59 <ul id="set_exception" class="ptsListLine"> 60 <li class="decFormTxtBox"> 61 <span class="elLbIt01">北海道</span> 62 <input type="text" id="auc_hokkaidoshipping1" name="hokkaidoshipping1" value="" size="5" onChange="toHankaku(this)"> 63 <span class="elLbYen"></span> 64 </li><!-- /.decFormTxtBox --> 65 66 <li class="decFormTxtBox"> 67 <span class="elLbIt01">沖縄</span> 68 <input type="text" id="auc_okinawashipping1" name="okinawashipping1" value="" size="5" onChange="toHankaku(this)"> 69 <span class="elLbYen"></span> 70 </li><!-- /.decFormTxtBox --> 71 72 <li class="decFormTxtBox"> 73 <span class="elLbIt01">離島</span> 74 <input type="text" id="auc_isolatedislandshipping1" name="isolatedislandshipping1" value="" size="5" onChange="toHankaku(this)"> 75 <span class="elLbYen"></span> 76 </li><!-- /.decFormTxtBox --> 77 </ul><!-- /.ptsListLine --> 78 79 80 81 </div> 82 </dd><!-- /.ptsDtl --> 83 </dl><!-- /.untInr --> 84 </div><!-- /.modSubTable --> 85 86'省略 87 88'以下入力情報確認画面への遷移ボタン 89 90 91<!-- 92FORM FOOTER 93--> 94 95<div id="modFormSbt"> 96 <div class="pts02a"> 97 <div class="pts02c"> 98 <p><span class="Button Button--normalSmall"><input id="acMdSave2" onClick="return onDraftSubmit('https://auctions.yahoo.co.jp/sell/jp/config/draft_save');" value="下書き保存" type="button"></span></p> 99 <div class="clr"></div> 100 </div> 101 </div> 102 103 <div class="alignC"> 104 <div class="m0Auto w390 cf"> 105 <div class="floatL mT10"> 106 <span class="Button Button--normalSmall"> 107 <input id="acMdBack2" onClick="submitDescription(); Ya.submit(document.auction, 'https://auctions.yahoo.co.jp/sell/jp/show/topsubmit', '', '', 'utf-8');" value="前の画面に戻る" type="button" class="auc_input_back"> 108 </span> 109 </div> 110 <span class="Button Button--proceedLarge"><div class="floatR"><input id="auc_submit2" onClick="return onItemSubmit(this, 'https://auctions.yahoo.co.jp/sell/jp/show/preview');" value="確認画面へ" type="button"></div></span> 111 </div> 112 </div> 113</div> 114 115'以下省略 116

試したこと

・セレクトボックスを.clickや.focusでイベントが発生するか確認
・入力後にApplication.Waitでイベント発生を待つ
など・・・・

補足情報(FW/ツールのバージョンなど)

Microsoft Windows 10 Pro
Microsoft EXCEL 2016
Microsoft Visual Basic for Application 7.1
Microsoft Internet Explorer 11.407.17134.0

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

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

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

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

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

coco_bauer

2018/11/29 06:35

「確定ボタン押下」で、何が起こる(どのプログラムが呼び出される)のでしょうか? VBAの欄に書かれているのは、FunctionでもSubでもないですが、どうやって呼び出すのですか?
macaron_xxx

2018/11/30 05:37

Valueとしていますがvalueではないですかねぇ。
x_x

2018/12/03 06:55

手で入力した際にはJavaScriptが動いているのでは?
guest

回答1

0

該当のタグはselectですので、
selectのvalueを変更すると現在選択されている選択肢の”表示”のみが変更されます。
なのでvalueで値をセットするのではなく、
ループして必要な選択肢を特定し、
対象の選択肢(option)に対し.Selected=Trueで選択、
もしくはselectタグに対し.SelectedIndexでSELECTタグの項目番号を選択してください。

ループするのがイヤなら強引に下記を子要素として追加するという手もあります。

<option value="レターパックプラス" class="" selected>レターパックプラス</option>

投稿2018/12/03 13:05

shinobu_osaka

総合スコア456

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問