VBAでinputのonblur属性がある場合の入力方法

このQ&Aのポイント
  • VBAを使用して<input>のonblur属性がある場合に値を代入する方法を教えてください。
  • 具体的なHTMLの例を示し、VBAでの値の代入方法について詳しく解説してください。
  • VBAで<input>に値を代入する際に、「オブジェクトは、そのプロパティまたはメソッドをサポートしていません」というエラーメッセージが表示される場合の対処方法についても教えてください。
回答を見る
  • ベストアンサー

<input>でonblur=がある場合の入力

次に挙げるようなHTMLがあります。 <form id="form" onsubmit="return checkDoubleSend();" action="/app/ord_jp_mgn_new.do;BV_SessionID=3DkhRFvB5lvTDRRhpK1H!1855743830?gmn=J&smn=05&lmn=02&fmn=01" method="post" name="OrdJpMgnNewForm"> 中略 <input type="text" onblur="valueDelComma(this.value, this);" value="" size="12" maxlength="8" name="orderValue" style=""></input> この<input>において、次に挙げるVBAで入力を試みました。 objIE.Document.forms("form")("orderValue").Value = Cells(Row, 5) そうしたところ、「438 オブジェクトは、そのプロパティまたはメソッドをサポートしてません。」のダイアログが出ました。 素人考えでは「onblur=」が悪さをしているのではないかと思うのですが、このような<input>にVBAから値を代入するのにはどのようにすればよいのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

言語や詳しい環境等やバージョンを書くようにして下さい。 下記では、どうでしょうか? だめなら、該当の URL を教えて下さい。こちらで試してみます。 objIE.Document.All.tags("input").Item("orderValue").Value = Cells(Row, 5)

intermediate
質問者

お礼

ご教示をいただきましてありがとうございました。 この件はわたしの実力で手に負えないと考えて、次に挙げる通りの力技で解決としました。(納得いかないですが) For Each objtag In objIE.Document.getElementsByTagName("input") If InStr(objtag.outerHTML, "orderValue") > 0 Then objtag.Value = Cells(Row, 5) Exit For End If Next 重ねて、ありがとうございました。

intermediate
質問者

補足

ご教示いただきましてありがとうございます。 残念ですが、ご教示いただいた方法では問題を解決するに至りませんでした。以前と同じエラーが発生します。 私の環境を記述せずに申し訳ありませんでした。私の環境は次に挙げる通りです。 + OS Windows 7 64bit Home Premium SP1 + 言語環境 Microsoft Excel 2007 SP3 + Web ブラウザ IE9 (ブラウザモード及びドキュメントモード共に) + 問題となるWebページ 楽天証券内の国内株式売「数量」項目ですので、ユーザ登録が無いとアクセスしていただけないかもしれません。sessionを除いたURLは次に挙げる通りです。 https://member.rakuten-sec.co.jp/app/ord_jp_mgn_new.do + ちなみに、別の<input>タグの項には入力(代入?)することが出来ました。 また「素人考えの」「onblur=」はこの問題に関係無いようでした。 以上、よろしくお願いいたします。また、代案でなくとも、ポインタで構いませんんで、情報を頂戴できれば幸甚に存じ上げます。

関連するQ&A

  • HTMLのinputタグ数が変わる場合のjavascript処理

    HTML上にinputタグが複数あって、その値をJavascriptで配列として受け取るコーディングをしています。 例えばこんな感じで・・・ 【サンプル1】 <form method="post" action="***.cgi" name="form1" onsubmit="return valueCheck(this);"> <input type="hidden" name="wData" value="aaa"> <input type="hidden" name="wData" value="bbb"> </form> function valueCheck(wForm) { document.write('wData='+wForm.wData[0].value); document.write('wData='+wForm.wData[1].value); } ただ、inputが1つしかない時もあるのですが、そのときの値が配列で受け取れません。 下記のように修正すると動くので、配列じゃないただの値だと判断されているようです。 【サンプル2】 <form method="post" action="***.cgi" name="form1" onsubmit="return valueCheck(this);"> <input type="hidden" name="wData" value="aaa"> </form> function valueCheck(wForm) { document.write('wData='+wForm.wData.value); } inputの値がいくつあるのかは都度変わるので、1つの時でも配列で処理したいのですが どのように記述すればいいのでしょうか。

  • 同じ作業を複数させる場合

    ちょっとタイトルのつけ方が下手でしたが、やりたいことはこんな感じです。 <FORM name="f1"> <INPUT type="text" name="t1" onblur="document.f1.t1a.value=this.value,document.f1.t1b.value=this.value.length;"> <INPUT type="text" name="t1a"> <INPUT type="text" name="t1b"> <FORM> と、このようなフォームをつくり、t1に半角文字を入力した際にt1a、t1bに入力された文字と その文字数を書き出すようにしたいのですが、これが複数あった場合にうまく省略する方法はないものか? と思い質問させていただきました。仮に、 <FORM name="f1"> <INPUT type="text" name="t1" onblur="document.f1.t1a.value=this.value,document.f1.t1b.value=this.value.length;"> <INPUT type="text" name="t1a"> <INPUT type="text" name="t1b"> <INPUT type="text" name="t2" onblur="document.f1.t2a.value=this.value,document.f1.t2b.value=this.value.length;"> <INPUT type="text" name="t2a"> <INPUT type="text" name="t2b"> <FORM> と、このような場合で10個も20個も同じ入力欄があった際に最もスクリプトを省略するには どのようにしたらいいのかがわかりません。 同じことを何度も繰り返し書くのは非効率に思えてならないのでどなたかいい方法をご存知の方の 知恵をお借りしようと思った次第です。よろしくお願いします。

  • 複数の入力欄についての入力チェック

    JAVAScriptを勉強し始めたものです。 よろしくお願いします。 1つのページに複数のフォームと入力欄があります。 それぞれの入力欄は数字を入力することになっていて、その数字が1~90の間にあるかどうかをチェックしたいと考えています。 下記のようなページを見ると、一つ一つの入力欄について、IF文でチェックしているのですが、一括してチェックするようなことは可能ですか? http://www.tagindex.com/javascript/form/check1.html ----------------------------------------- 【以下に、やりたいことの例を示します】 <script type="text/javascript"> <!-- function matchNum() { n=eval(document.myFORM1.myTEXT1.value); // ←この行の「myFORM1」と「myTEXT1」をすべてを網羅するように書き換えられないか? if ( n < 1 || n > 90 ) { alert("入力できるのは、1~90の値です。"); } } // --> </script> <FORM METHOD="GET" name="myFORM1"> <INPUT TYPE="text" NAME="myTEXT1" onblur="matchNum()"> <INPUT TYPE="text" NAME="myTEXT2" onblur="matchNum()"> <INPUT TYPE="text" NAME="myTEXT3" onblur="matchNum()"> </FORM> <br> <FORM METHOD="GET" name="myFORM2"> <INPUT TYPE="text" NAME="yourTEXT1" onblur="matchNum()"> <INPUT TYPE="text" NAME="yourTEXT2" onblur="matchNum()"> <INPUT TYPE="text" NAME="yourTEXT3" onblur="matchNum()"> </FORM> <br> <FORM METHOD="GET" name="myFORM3"> <INPUT TYPE="text" NAME="hisTEXT1" onblur="matchNum()"> <INPUT TYPE="text" NAME="hisTEXT2" onblur="matchNum()"> <INPUT TYPE="text" NAME="hisTEXT3" onblur="matchNum()"> </FORM> <br> <FORM METHOD="GET" name="myFORM4"> <INPUT TYPE="text" NAME="herTEXT1" onblur="matchNum()"> <INPUT TYPE="text" NAME="herTEXT2" onblur="matchNum()"> <INPUT TYPE="text" NAME="herTEXT3" onblur="matchNum()"> </FORM>

  • サイト検索窓の文字色を、触れる前と入力する時で色を変えようとしています

    サイト検索窓の文字色を、触れる前と入力する時で色を変えようとしていますが、 うまくいかずに非常に困っております。 今のhtmlがこれです。 -------------------- <form name="myform" action="http://www~~" method="post"> <input type="text" name="search_name" value="サイト内検索" id="uid" onfocus="if (this.value == 'サイト内検索') { this.value='' }" onblur="if (this.value == '') { this.value='サイト内検索' }" /> <input type="submit" value="検索" name="button" id="btn" class="fadeBtn" /> </form> -------------------- cssで<input>のcolorを指定したら、 入力する前の表示も、入力した時の表示も同じ色になりました。 そこで、調べた結果以下のようにonfocusとonblurにcolorを指定したのですが、 うまくいきませんでした。 -------------------- <form name="myform" action="http://www~~" method="post"> <input type="text" name="search_name" value="サイト内検索" id="uid" onfocus="if (this.value == 'サイト内検索') { this.value='' } { this.style='color:#000000' }" onblur="if (this.value == '') { this.style='color:pink' } { this.value='サイト内検索' }" /> <input type="submit" value="検索" name="button" id="btn" class="fadeBtn" /> </form> -------------------- javaが必要なのでしょうか? javaには詳しくないため、必要でしたら教えていただきたいです。 どうぞご回答お願いします・・・。

  • INPUTにnameがない場合のsubmit

    <FORM ACTION="login.asp" METHOD="POST"> USER ID:<INPUT TYPE="text" NAME="userid" SIZE="12"><br> パスワード:<INPUT TYPE="password" NAME="pass" SIZE="12"><br> <INPUT TYPE="submit" NAME="btn01" VALUE="ログイン"> <INPUT TYPE="reset" VALUE="クリア"> </FORM> 上記のHTMLに対して、VBAで操作する場合、 データセットした後 objIE.document.all.btn01.Click 'クリックメソッドを実行 で、submit出来るかと思います。 今、VBAで自動ログインしたいサイトが <INPUT TYPE="submit" VALUE="ログイン"> のような感じで、nameの属性がありません。 こういうときは、VBAではどうすればログインできるのでしょうか。 初歩的な質問ですみませんが、わかる方教えてください。

  • 消えないinput内の文字

    グーグルの検索窓を付けてクリックすると 消える文字を表示しようと思ったのですが 思ったように消えてくれません ソースの一部 <input type="text" name="q" size="18" onfocus="if (this.value == 'keyword') {this.value = '';}" onblur="if (this.value == '') {this.value = 'keyword';}" value="keyword" /> どこか間違っているのでしょうか? それともこれ以外に問題があるのでしょうか? ちなみにIE8とFirefox3.5で確認しました

  • 指定のinputに入力

    恐れいります。 <form action="./xxx.cgi" method="POST"> <input type="text" name="name1"> <input type="text" name="name2"> <input type="text" name="name3"> <input type="text" name="name4"> <input type="text" name="name5"> <input type="submit" value="送信"> </form> と、5つの入力欄があり、別ウィンドウから、指定の場所に代入することは可能でしょうか。例えば、name1のエリアに、別ウィンドウからformで「test」という文字を送信して入力する感じです。 よろしくお願いします。

  • javascriptでinput属性の入力

    複数のボタンがあります。 それぞれのボタンによって、value値を変えたいと考えています。 通常であれば <button class='button' type='submit' name='volume' value='350'>350購入</button> <button class='button' type='submit' name='volume' value='450'>450購入</button> という形を利用しますが、理由があり、 type='submit' を使用できません。 そこで、 <input id="button350" type="button" value="350購入" /> <input id="button450" type="button" value="450購入" /> というsubmit属性の無いボタンを使用しながら、「javascriptを使いname value を抽出しsubmitまで持っていく」ことを考えています。 そこで、下記のようなものを2種類(350と450は別の記載方法でテスト)作ってみましたが、いずれもsubmitは出来ますが、value値を渡すことが出来ません。 どのように書けば、name属性にvalue値を渡すことが可能でしょうか? <form action="abc.php" method="post" name="form2" id="form2"> <script> $(function(){ $('#button350').click(function() { $('input[type=\'submit\']'); $('input[name=\'volume\']'); $('input[value=\'350\']'); $('#form2').submit(); }); $('#button450').click(function() { $('input[type=\'submit\'],[name=\'d4_buy_stock_volume2\'],[value=\'450\']'); $('#form2').submit(); }); }); </script> <BR> <BR> <input id="button350" type="button" value="350購入" /> <BR> <input id="button450" type="button" value="450購入" /> </form>

  • inputとtextareaに

    今、フォーム部品に以下のような指定をしています。 <input type="text" value="デフォルト値" onfocus="if(this.value==this.defaultValue)this.value = ''" onblur="if(this.value=='') this.value=this.defaultValue"> このonfocus以降の指定をinput type="text"とtextareaのみに自動で追加しようとしているのですが、調べてもよくわからなかったため質問することにしました。 このような指定はjavascriptでできますか?

  • VBA IE フォーム名(NAME)が変わる場合

    NAMEが同じ(例えば<input type="text" name="ID">)なら objIE.Document.all.ID.Value = 文字 また常に一番上なら objIE.Document.Form(0).Value = 文字 で入力可能なのですが、常に<input type="text" name="ココが変わる"> 状態でさらに順番も変わる場合どうすればよいのでしょう? name="ココが変わる" このnameを取得することは可能でしょうか?

専門家に質問してみよう