VBでのInternetExplorerのオブジェクトへのアクセス方法について

このQ&Aのポイント
  • VBでのInternetExplorerのオブジェクトへのアクセス方法について教えてください。質問させていただきます。
  • VB(WHS?)で自動巡回プログラムを作成していますが、formに入っていないオブジェクトの指定方法や、frameの向こう側のソースのオブジェクトの指定方法が分からず困っています。
  • どうぞよろしくお願いいたします。
回答を見る
  • ベストアンサー

VBでのInternetExplorerのオブジェクトへのアクセスについて教えてください!

はじめて質問させていただきます。 現在VB(WHS?)で自動巡回プログラムを作成しております。 その中で2つ、どうしてもできないことがあるので どうぞよろしくお願いいたします。 1)formも存在している中でformに入っていないオブジェクトの指定方法 ---------------------------------  例:  <FORM name="form1" method="post" >   <INPUT type="text">   <INPUT type="button" value="ボタン1">  </FORM>  <INPUT type="ここに文字をセットしたい"><INPUT type="button" value="これを押したい"> ---------------------------------  ボタン1とかかれたボタンには、  CreateObject("InternetExplorer.Application").document.form1.elements(1).click  などでアクセスすることができますが、フォームに入っていないオブシェクトにアクセスできません。 2)frameの向こうがframeで、その先のソースのオブシェクトの指定方法 ---------------------------------  手前のフレーム  <html>  <frameset rows="*,*">   <frame src="f1.htm" name="f1">   <frame src="f2.htm" name="f2">  </frameset>  </html>  ---------------------------------  奥のフレーム  <html>  <frameset cols="*,*"> <frame src="f1-1.htm" name="f1-1"> <frame src="f1-2.htm" name="f1-1">  </frameset>  </html> ---------------------------------  この状態でf1-1.htm上のオブジェクトにアクセス  (ボタンを押したり値をセット)したいのです。  いろいろためしたのですが、どうしてもできず、  投稿させていただきました。  よろしくお願いいたします。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

フレームの入れ子の場合なら oIE.Document.Frames(n).Document.Frames(m).Document で 入れ子になったドキュメントオブジェクトが取得できると思いますよ n,mなどは 0ベースの数字になります ...

unknown_un
質問者

お礼

redfox63様! ありがとうございます! 早速テスト環境で試してみたらできました! (本番は仕事場ですが、外のネットワークからできないので  月曜日に試します!が絶対できそうです!) 基本的な理解がなく、単にソースを丸コピーしてなんとか動かしていたので、 3つ目の「.Document」を付けるという概念がありませんでした。  

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

フォームタグの外にある nameやidプロパティの無いタグを探すなら documentの getElementsByTagNameで指定タグのコレクションを取得して検索することになりそうですよ dim objItem for each objItem in oIE.document.getElementsByTagName("INPUT")  if objItem.value="これを押したい" then   objItem.click   exit for  end if next といった具合でしょう ...

unknown_un
質問者

お礼

redfox63様! こちらもありがとうございます! こちらもできてしまいました! 私にはまったく想像もつかない方法でした。 私にはそのようなサイトにあった「巡回させながら探す」というのが、 どうしても具体的にどんなことを指しているのか理解できなかったのですが、 このたびいただいた回答にて少し分かりました。 前任者の資料に、VBでの自動巡回プログラムのサイトのブックマークが あって、丸コピーしながら理由も分からず動かしていた状態だったので どの位ありがたいか言葉にできません。 最後の綱だと思って数週間悩んだ上、投稿をしたのですが、 このようなご回答をいただけ、感激です。 本当にありがとうございました。

関連するQ&A

  • 親フレームの変数にアクセス(JavaScript)

    [index.html] <script src="script.js"></script> <frameset rows="50%,*" frameborder="1"> <frame src="content1.html"name="cont1"> <frame src="content2.html" name="cont2"> </frameset> [script.js] var test_text="てすと"; [content1.html] <form> <input type="text" name="in"> <input type="button" onClick="window.parent.test_text = document.forms[0].in.value;" value="IN"> </form> [content2.html] <form> <input type="text" name="out"> <input type="button" onClick="document.forms[0].out.value = window.parent.test_text;" value="OUT"> </form> のようになっています。 「index.html」の「script.js」の変数に、「content.1html」と「content2.html」からアクセスしたいです。 ですが、フレームになっているため、思うような動作をしてくれません。 よろしくお願いします。

  • FireFoxでJavaScriptのエラーが出ます。

    現在JavaScriptを独学しはじめた者ですが、ご回答の方よろしくお願いいたします。 右側のフレームに文字又は数字を入れてクリックすると左側のフレームに反映されると言うスクリプトです。 IEでは問題なく動作しますがFireFoxだと動作しません。 親フレーム <frameset cols="20%,*"> <frame src="left.html" name="left"> <frame src="right.html" name="right"> </frameset> 左側のフレーム <input type="text" name="answer"> 右側のフレーム <form> <input type="text" name="question"> <input type="button" value="click" onclick="parent.left.answer.value=this.form.question.value"> </form> アドバイスよろしくお願いいたします。

  • fileUploadオブジェクトへの値の代入 (困っています。教えてください。m(__)m)

    こんばんは。 fileUploadオブジェクトへの値の代入がどうにもこうにもできません。 いったいどうしたらいいのでしょうか?どうか助けてください。 よろしくお願いいたします。m(__)m -- <HTML><BODY> <FORM NAME="myFormF"> <INPUT TYPE="file" NAME="myFile"> <INPUT TYPE="button" value="set FILEFILE -> file" onClick="document.myFormF.myFile.value='FILEFILE'"> <INPUT TYPE="submit" onClick="alert(document.myFormF.myFile.value)"> </FORM> <FORM NAME="myFormT"> <INPUT TYPE="text" NAME="myText"> <INPUT TYPE="button" value="set TEXTTEXT -> text" onClick="document.myFormT.myText.value='TEXTTEXT'"> <INPUT TYPE="submit" onClick="alert(document.myFormT.myText.value)"> </FORM> </BODY></HTML> -- key: fileUpload object,ファイルアップロードオブジェクト,WSH,javascript

  • 左右に分かれているフレーム間での値の受け渡し

    こんにちは、はじめまして。 左右に分かれているフレーム(右にあるフレームを押下すると、左側のフォーム内の処理が走り、その結果(フラグなど)をサーバに送りたいです。 ソースは以下のようになっています。Javascriptで値の受け渡しをしたいのですが、どのようにすればsubmitができるかわかりません。どなたがご存知の方、よろしくお願いします。 ↓以下ソース↓ ~右側~ <form action="menu.php" method="post" name="form_menu"> <input type="button" value="test" onClick="push();">      省略 </form> <script language="javascript"> function push() {  --ここが分かりません-- ここで左側のフォームに送るフラグ値をセットして  それを左側のフォームにsubmitしたいです。 } </script> ~左側~ <form action="input.php" method="post" name="form_input">      省略 </form> ~フレーム~ <FRAMESET cols="80%,20%" frameborder="0"> <FRAME SRC="input.php" name="frame_input"> <FRAME SRC="menu.php" name="frame_menu"> </FRAMESET>

    • ベストアンサー
    • PHP
  • 他のフレームにあるボタンを使用不可にするには?

    2つのフレームに分割した画面で、一方のフレームにあるボタンを押したら、他のフレームにあるボタンを使用できなくしたいのですが、うまくいきません。下記のスクリプトでは、エラーになってしまいます。どのようにしたら良いでしょうか、よろしくお願いいたします。 <フレームの設定> <html> <head><title>フレームを縦に分割する</title></head> <frameset cols="50%,50%"> <frame src="left.html" name="light_frame" frameborder=1 border=1> <frame src="right.html" name="left_frame" frameborder=1 border=1> </frameset> </html> <left.htmlの内容> <html> <head> </head> <body> <form name="myform"> <input type="button" name="bt_del" value="削除"> </form> </body> </html> <right.htmlの内容> <SCRIPT Language="JavaScript"> function func1(){ //NG parent.left_frame.document.form.myform.bt_del.disabled = true; //これもNGでした //parent.left_frame.document.forms['myform'].bt_del.disabled = true; } </SCRIPT> <html> <head> </head> <body> <p><input type="button" value="変更" onclick="func1()" > </body> </html> 以上です。

  • 1つのformで複数のactionをボタン1つで

    質問です。 1つのformで複数のactionを1つの送信ボタンで実行したいと思っています。 やりたいことは、1つのframeから他の2つのframeにデータを渡すことです。 フレームは以下のように3つに分かれています。 <frameset cols="60%, 40%"> <frame name="test1" src="xxxx.php"> <frameset rows="50%, 50%"> <frame name="test2" src="yyyy.php"> <frame name="test3" src="zzzz.php"> </frameset> </frameset> xxxx.php内のデータをyyyy.php, zzzzphpの2つに渡したいです。 <script language="javascript"> function send(){   document.form1.target = "test2";   document.form1.action = "yyyy.php";   document.form1.submit();   document.form1.target = "test3";   document.form1.action = "zzzz.php";   document.form1.submit(); } </script> <form name ="form1" method="POST" action="yyyy.php"> <input type="hidden" name="string" value="string" > <input type="button" value="送信" onClick="send()"> </form> 現在、上記のように試したり、過去の質問【一つのformから複数のactionを実行】url:http://okwave.jp/qa/q4234502.htmlを参考にしていますがうまくいきません。 わかる方アドバイスお願い致します。

  • できる人がいたらお願いします。

    大切なところだけ下記に書き込みました。 今の所ここまでできていて後少しと言う所だと思うのですが。下記の※の部分が邪魔をしてどうしてもframe1.htmlのボタンが無効化してしまいます。 frame2.htmlの※の所を抜かせばいいじゃないかと思うのですが、frame2.htmlは加工できません。 なので、javaでもperlでもなんでもいいので。 frame2.htmlだけ変えないでtextareaに文章を入れたいです。 ヨロシクお願いします。 --------index.html------- <!DOCUMENT HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN""http://www.w3.org/TR/html4/loose.dtd"> <HTML> <head> <title>frames1.0</title> </head> <frameset cols="50%,50%"> <frame src="frame1.html" name="frame1"> <frame src="frame2.html" name="frame2"> </frameset> </html> --------frame1.html------- <HTML> <body> <form> <input type="button" value="送信" onclick="window.parent.frame2.document.getElementById('txt').value='文章1';window.parent.frame2.document.getElementById('txt1').value='文章2';"> </form> </body> </html> --------frame2.html------- <html> <body> <input name='txt' type='hidden' value=''> ※ <input name='txt1' type='hidden' value=''> ※ <center> 文章<BR> <textarea rows=2 cols=38 name=txt></textarea><BR> 文章<BR> <textarea rows=2 cols=38 name=txt1></textarea><BR> </center> <body> <html>

  • <input>

    お聞きしますがチャット等で<input type="submit" value="入室" name="submit">で入室できますがこれだと自分のフレーム内からはみ出してしまいます。 CGIを組まないで外部からHTMLだけでやりたいのですが無理でしょうか? ちなみに <form method="post" action="http://" name="enter"> 名前<input type="text" name="user" value="名前"> <input type="submit" value="入室" name="submit"> </form> こんな感じで、これだと <frameset rows="100,*"> <frame src="1.html" name="1"> <frame src="2.shtml" name="2"> </frameset> で、1が先程の入室画面で2を発言後の画面で3を発言画面だとします。 1から3に飛ばし、発言した言葉を2に送るようにしたいのですが1で入室画面を押すと、元の本チャットへ戻ってしまうので困ります。 後、<frameset>の中の背景等を強制的に他の色にしてみせる事はできませんでしょうか?

    • ベストアンサー
    • HTML
  • JavaScriptから別フレームのasp出力ドキュメントにアクセスできません。

    まず以下のソースをご覧ください。 [index.html] <html> <frameset cols=50%,*> <frame src="frame01.html"> <frame src="frame02.asp"> </frameset> </html> [frame01.html] <html> <head> <script type="text/javascript"> <!-- function insertText(){ parent.frames[1].document.myform.mytext.value = "テスト"; } // --> </script> </head> <body> <form> <input type="button" value="出力" onclick="insertText()"> </form> </body> </html> [frame02.aspにより出力されたソース内の記述] <html> <head> </head> <body> <form name="myform"> <input type="text" name="mytext"> </form> </body> </html> frames[0]のボタンを押すとframes[1]のテキストフォームに"テスト"が出力されるようにしています。 frame02.aspが静的なHTMLだった場合は問題なく動作するのですが、aspによって出力されたhtmlではエラーになってしまいます。 これはフォームに対する操作だけでなく、document.write()等のあらゆる操作に該当します。 当方はaspのことは全くわからず、またこのaspの中身を書き換える権限もありません。あくまで出力された結果に対して動的に操作を加えたいのです。 原因としては次のようなものを考えました。 ・aspドキュメントのパスに対してアクセス権限が無い。 ・aspもしくはCGIの実行によってもたらされたHTMLに対してはスクリプトは動作しない。 ・実際の出力結果のヘッダにはJavaScriptが記述されており、これが何らかの影響を及ぼしている。 ・事前にスクリプトから操作を受けないようにプロテクトされている。 ご助力を願えれば幸いです。

  • 画面全体に表示したい!

    まずは、下のソースをご覧下さい。 ------------------------------------------------- ファイル : sample1.htm <HTML> <HEAD><TITLE>CALL</TITLE></HEAD> <BODY> <a href="sample2.htm">フレーム分割</a> </BODY> </HTML> ------------------------------------------------- ファイル : sample2.htm <HTML> <HEAD><TITLE>MAIN_FL</TITLE></HEAD> <FRAMESET ROWS="64,*,64"> <FRAME SRC="top_frame.cgi" NAME="top" TARGET="A1"> <FRAMESET COLS="540,*"> <FRAME SRC="left_frame.cgi" NAME="right" TARGET="A2"> <FRAME SRC="right_frame.cgi" NAME="left" TARGET="A3"> </FRAMESET> <FRAME SRC="und_frame.cgi" NAME="under" TARGET="A4"> <NOFRAMES><BODY>このページにはフレームが使用されていますが、お使いのブラウザではサポートされていません。</BODY></NOFRAMES> </FRAMESET> </HTML> ------------------------------------------------ "und_frame.cgi"を実行した後、表示されたHTML <HTML> <HEAD><TITLE>UNDER_FRAME</TITLE></HEAD> <BODY> <FRAME NAME="BACK_TOP" METHOD="POST" ACTION="sample1.htm" TARGET=> <INPUT TYPE="HIDDEN" NAME="H1" VALUE="AAA"> <INPUT TYPE="HIDDEN" NAME="H2" VALUE="BBB"> <INPUT TYPE="SUBMIT" NAME="S1" VALUE="トップへ"> </FORM> </BODY> </HTML> ------------------------------------------------ 以上です。これを実行しますと4つのフレームに分割されまして、 一番下のフレームには「トップへ」というサブミットボタンが表示されます。 そこでボタンを押されたら一部のフレームだけじゃなく、 画面全体を"sample1.htm"を実行した画面に遷移したいのですが、 どのようにやればよろしいのでしょうか?

    • ベストアンサー
    • HTML

専門家に質問してみよう