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

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

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

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

1257閲覧

EXCEL VBA で IE を制御したいが、comboboxの値を設定しても画面に反映しないのです

sinochann

総合スコア6

VBA

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/02/27 01:30

前提・実現したいこと

職場のシステムが更新されたのですが、UIがちょっとどうかしている設計で
操作性が悪いため、EXCEL VBA で自動操作できるように奮闘中です

試したこと

objIE.document.getElementById("color").selectedIndex = 1

で、「青色」を選択しているのですが、(msgboxで選択の成功は確認済み)

objIE.document.getElementById("color").FireEvent ("onchange")

で、画面のコンボボックスを更新したいのですが、なぜか更新されません
HTMLソース文中に onchange= といった記載が無いため、下記のHPを参考に
https://qiita.com/rinkun/items/08b6329c0e6fd3db7b37
強制的に発火させようとしましたが、これもうまくいきませんでした

.Document.Script.setTimeout なども試そうとしましたが、
Javaに詳しくないため、うまくいきませんでした

該当のソースコード

<td class="w100Per tLeft"> <select class="easyui-combobox w100Per mousetrap combobox-f combo-f textbox-f" id="color" style="display: none;" textboxname="color.Cd" comboname="color.Cd"> <option selected="selected" value=""></option> <option value="001">001:赤色</option> <option value="002">002:青色</option>

雑駁な質問で恐縮ですが、ご指導のほど、よろしくお願いいたします

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

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

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

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

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

guest

回答3

0

select要素にonchangeは設定されていないのに、選択しただけで更新されるということは、何が別の方法で処理が実行されているということです。

考えられるのは、form内にselect要素が埋め込まれている場合。
その場合は、下記でいけると思います。

VBA

1With objIE.document 2 .getElementById("color").selectedIndex = 1 3 .Forms(0).submit 4End With

formが一つまたは最初の場合のコード例ですが、2つ目以降のformの場合は 0 を適宜変更してください。

投稿2018/02/27 02:25

hatena19

総合スコア33715

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

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

sinochann

2018/02/27 04:34

回答ありがとうございます 実行すると、他のページから移動 or このページにとどまる とメッセージかでました 移動を選択すると、システムより「不正な操作が行われました」とでます あと、後出しですみません、前出のページのソースのすぐあとに </select>&nbsp;<b style="color: blue;">[3]</b><span class="textbox combo" style="width: 736px; height: 20px;"><span class="textbox-addon textbox-addon-right" style="right: 0px;"><a tabindex="-1" class="textbox-icon combo-arrow" style="width: 18px; height: 20px;" href="javascript:void(0)" icon-index="0"></a></span><input class="textbox-text validatebox-text textbox-prompt" style="width: 885px; padding-top: 0px; padding-bottom: 0px; margin-right: 20px; margin-left: 0px;" type="text" placeholder="" autocomplete="off">&nbsp;<b style="color: blue;">[4]</b><input name="color.cd" class="textbox-value" type="hidden" value=""></span> とあります、また、ページソースの上部に、 <a onclick="(function() { var form = document.createElement('form'); &#10;&#9;&#9;&#9;&#9;form.action = '/sample-web/sample0001'。。。。。。。 ともあります このあたりが悪さをしているのでしょうか?
sinochann

2018/02/27 04:35

cとかvbはある程度さわれるのですが、Javaとかhtmlは門外漢なので うまく説明できていませんが、よろしくお願いいたします
hatena19

2018/02/27 05:09

ソースの一部だけでは、判断は難しいですね。実際のページのURLを提示されれば解析できるかもしれませんが。ただ、私もWEB関係はそんなに詳しくないので、これ以上回答できるかはわかりません。
sinochann

2018/02/27 05:49

一部だけ切り取っての質問、済みませんでした です
guest

0

まず、Java と JavaScript は全く別物です。
名前が似過ぎてるので面倒なもんです。

そして、「msgboxで選択の成功は確認済み」とは
どうやって確認されているのでしょうか?

恐らく、コンボボックスのリストが選択できてるはずなのに
画面上のコンボボックスの値が変わらない?
と思われている状況だと推測されますが、
選択自体ができてない可能性の方が高いように思います。
(JavaScriptは初心者ですが、コンボボックスに関数やイベントが指定されてないように見受けられます)

あと、objIE・・・("color").value="002" 等は試されたのでしょうか?

投稿2018/02/27 01:45

ExcelVBAer

総合スコア1175

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

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

sinochann

2018/02/27 01:55

早速の回答、ありがとうございます objIE.document.getElementById("color").selectedIndex = 1 MsgBox objIE.document.getElementById("color").selectedIndex で 「1」 と表示されるので、更新はかかっていると思います objIE・・・("color").value="002" も試しましたが、同様に駄目でした
ExcelVBAer

2018/02/27 02:43

なるほど。 次に疑わしきは、「getElementById("color")」が、 想定箇所を取得しているかどうかとう点が考えられますが、 該当ページ内に「id="color"」は1か所しか無いでしょうか?
sinochann

2018/02/27 04:18

返信ありがとうございます 該当ページ内に「id="color"」は1か所しか無いです
h.horikoshi

2018/02/27 04:27

掲示されているhtmlは実際のコードそのものですか? select要素のスタイルに「Display:none」があるので、この要素は画面に表示されていないないように思います。同じような選択リストを表示している別のselect要素はありませんか?
sinochann

2018/02/27 05:51

ソースが長く、また社内システムなので、質問をしている立場ではありますが なかなか、どかんと全部そのままコピペしずらい状況です 申し訳ありません なんだかいろいろやっている内に動いていまいました 行き当たりばったりでは、いずれ詰むので Javaとか体系的に勉強してみます
guest

0

自己解決

解決しました

objIE.document.getElementsByTagName("INPUT")(3).Value = "002:青色"
objIE.document.getElementsByTagName("INPUT")(4).Value = "002"

とすると、画面に更新が表示されました
コンボボックスなので、両方代入しないとだめなんでしょうか

とりあえず、動きました
なんだか本質的には解決していないようですが・・・

回答者の皆様方、ご協力ありがとうございました!

投稿2018/02/27 05:47

sinochann

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問