• 締切済み

VBSでIE操作

VBSでIEの操作を自動化するプログラムを作成しています。 ドロップダウンリストを選択する処理で、サイト側のソースが「name="birthday[Y]"」や「name="birthday[m]"」、「name="birthday[d]"」だった場合、単純な指定では動作しないのでしょうか? VBS上では「IEオブジェクト.Document.forms(0).("birthday[Y]").value = "1983"」という記述で試してみたところ、「オブジェクトがありません。:'Y'」とエラーになってしまいます。 birthday[?]は配列的なもので特別な指定の仕方があるのでしょうか? プログラムを組み始めて間もないため記述に不足等あるかと思いますが、アドバイスいただけると幸いです。

みんなの回答

  • kumatti1
  • ベストアンサー率60% (73/121)
回答No.2

> forms(0) で合ってるとして、Name属性でなくてインデックス値で指定したらどうでしょう。 ↓マウスカーソル直下の要素を取得コード(VBA)

参考URL:
https://gist.github.com/kumatti1/aa4f59937a9ae48c887b
  • kzinoue
  • ベストアンサー率12% (1/8)
回答No.1

この回答枠で全てを記載することができません。 まず、疑うべきところとして「IEオブジェクト.Document.forms(0).」 開いているIEオブジェクトは、Document.forms(0)でしょうか? また、以下に書き換えて試してみては、  IEオブジェクト.Document.forms(0).item("birthday[Y]").value = "1983" ちょっと不安ですが・・・。

関連するQ&A

  • 起動済みのIEをハンドルから操作するには

    既に起動済みのIEブラウザをWSH(VBS)などから、ハンドルを取得して HTMLソース内のフォームに値をセット(Document forms elementなどで) する事はできますでしょうか? 出来るとすれば、IEを捕まえて操作するには、どのようにすれば良い でしょうか? ■補足 起動したIEは、自身のスクリプトからオブジェクトを生成したもの では無く、ウインドウタイトルくらいしか解りません。

  • VBSのIEオブジェクトでフォームデータ送信する

    ■質問 通常IEオブジェクトを使ってフォームにセットされたデータを サブミットするには、 IE.Document.forms("").elements("").value = "" IE.Document.forms("").submit() と行うと思うのですが。 例えば下記のようなフォームを送信する際、 フォームのある"http://test.com/login_form" ページにわざわざ移動せず 直接"http://test.com/action"の "hidden"のエリアに対してデータを送信 する方法を教えて頂けませんでしょうか? また、Form1に複数のエレメントが存在する場合 全てのエレメントの値を送らないと正しく処理 できないでしょうか? ■"http://test.com/login_form" のHTML <form name="Form1" method="post" action="/action"> <input type="hidden" name="ID" value="1234"> <input type="submit"> </form>

  • IE7のVB.NETでの操作

    Dim IE as Object Dim f As Object IE = CreateObject("InternetExplorer.Application") f = IE.document.forms(0) f.sentaku.click() このようにしてIEのボタンを押そうと考えているのですが、f = IE.document.forms(0)のところでエラーがでて止まってしまいます。 IE7はこのような操作はできなくなってしまったのでしょうか。 IEを終了して開き直して試しても同じ結果で困っています。 解決策を教えてください。 よろしくお願いします。

  • EXCEL VBA:IEの操作であるラジオボタンを選択する方法

    IEの操作に関して、あるhtmlページに複数のラジオ・ボタンがあってそのなかの一つを選択する方法を教えていただけますでしょうか。 そのラジオ・ボタンは次のようにjava scriptでソースに記述されています。 <input type = "radio" name="bname" value="5"> そこで次のようにマクロで記述したのですが、「実行時エラー:438、オブジェクトはこのプロパティまたはメソッドをサポートしていません。」と出ます。 .Navigate targetURL With .Document.Forms(0) .Item ("bname") .Value(5).Checked = True ← ここでエラーが出る。 End With .Value(5)を.Value("5")としても同じエラーがでます。 別のプロパティ・メソッドが必要なのでしょうか。

  • VBScriptでHTMLのセレクトボックスで表示されている値に指定したい

    VBScriptでHTMLのセレクトボックスで表示されている値(value)に指定したいと思っています。どのようにすればよいのでしょうか?詳しくは下記参照。 もし、VBSで無理であるのならほかの言語で可能な言語を教えていただきたく思います。 例:”value_1”を指定してVBSで選びたい <select name="select_name" onchange="select_onchange"> <option value="value_1">value_1_1</option> <option value="value_2">value_2_2</option> </select> (注意) 下記のように位置情報で指定するのではなく、valueの値(value_1)や表示されている値(value_1_1)でしたいと思っています。 IEオブジェクト.Document.フォーム名.コンボボックス名.selectedIndex = 0からの番号

  • vbsでフォーム入力ができません

    set oIE=Wscript.CreateObject("InternetExplorer.application") oIE.navigate2("http://xxxyyy/index.html") oIE.visible=true Do Until oIE.Busy = False WScript.sleep(250) Loop oIE.document.sf1.name.value="山田太郎" oIE.document.sf1.email.value="abc@xxx.co.jp" oIE.document.sf1.subject.value="人材募集" oIE.document.sf1.submit() 7行目のoIE.document.sf1.name.value="山田太郎"でエラーになってしまいます。”オブジェクトでサポートされていないプロパティまたはメソッドです”とエラーメッセージがでます。vbsは殆どわかりませんのでわかる方いましたらお願いします。

  • WEBページのラジオボタンを設定するには??

    WinXP、VB.NET、IEでプログラムを作っています。 <input type=radio name=.a value=p checked> <input type=radio name=.b value=m> <input type=radio name=.c value=g> などとなっているところのラジオボタンを設定するにはどうしたらよいでしょうか? IE.document.Forms(0).Elements(".b").Checked = True IE.document.Forms(0).Elements(".b").value("m") = True など試してみたのですがダメでした。 正しい方法をご教示頂きたくお願い致します。

  • VBA IE操作 ログイン後URLを取得したい

    yahooにログインするVBAコードはわかるのですが、 ログインが失敗なのか正常にログインできたのかをVBAで知りたいです。 結果を知るには、ログインボタン押下後のURLを取得できればいいと思うのですが その方法がわかりません。 ログイン自体は、 --------------------------------------------------------- Sub ie_test() Dim objIE As Object 'IEオブジェクト参照用 'インターネットエクスプローラーのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True '見えるようにする(お約束) '文字列で指定したURLに飛ぶ objIE.Navigate "https://login.yahoo.co.jp/config/login?.src=www&.done=http://www.yahoo.co.jp" '表示終了まで待つ Do While objIE.Busy = True '何もしないループ(笑) DoEvents Loop '項目名を指定して、データをセットする objIE.document.all.UserName.Value = "UserName" objIE.document.all.passwd.Value = "****" objIE.document.Forms(0).submit End Sub --------------------------------------------------------- で、できました。 objIE.document.Forms(0).submitの後には、 ログインが出来ていたら http://www.yahoo.co.jp/ のページへ行き、 ログイン失敗なら https://login.yahoo.co.jp/config/login? のURLが表示され、図のように 「Yahoo! JAPAN IDまたはパスワードが正しくありません。」 と表示されます。 objIE.document.Forms(0).submitの後に MsgBox objIE.URL を入れると 「オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438)」 になり、 MsgBox objIE.Navigate を入れると 「引数の数が一致していません。または不正なプロパティを指定しています。(Error 450)」 になります。 ログイン後のソースをエクセルに書き出す方法も考えましたが、書き出しに時間がかかるのでやめました。 ご教授よろしくお願いします。

  • vbsを利用して、特定サイトの操作を自動化したいと

    vbsを利用して、特定サイトの操作を自動化したいと思い作成しています。 ある程度はできてきたのですが、ページ内のタブを操作する動作がうまくいきません。 HTMLはよくわかっていないのですが、NAMEは設定されていないのでTITLEで該当リンクは取得できているようなのですが、CLICKを指定してもタブが切り替わりません。 CLICKでは反応しないのでしょうか? 参考までにソースを記載します。 for each a in IEオブジェクト.document.all.tags("li") if a.title = "タブ" then a.click exit for end if next 動かすためにはどうしたらよいでしょうか?

  • Arrayオブジェクトとforms配列

    以下のスクリプトを実行すると、(2)の所で「document.forms.GetFromArray is not found」 のエラーとなります。(ブラウザはFirefox)。 意図としてはArrayオブジェクトをカスタマイズして追加したGetFromArray()メソッドでforms配列を操作したいのですが... エラーメッセージからすると、「document.formsは配列(Arrayオブジェクト)では無い」と言っているようです。 この方法でforms配列を参照する方法を教えて下さい。 あるいは、Arrayオブジェクトではない、他のオブジェクトをカスタマイズするのでしょうか?お願いします。 <html> <head> <script type="text/javascript"> <!-- Array.prototype.GetFromArray=function(func){ for(var i=0;i<this.length;i++){ func(this[i]); } } function disp1(h){ alert(h); } function disp2(h){ alert(h.name); } function run(){ var array=new Array('dog','cat','fish'); array.GetFromArray(disp1); //(1) OK document.forms.GetFromArray(disp2); //(2) エラー } //--> </script> </head> <body> <form name="test"> <input type="text" name="bunrui" value="分類">/ <input type="text" name="detail" value="詳細">/ <input type="button" value="実行" onClick="run();"> </form> </body> </html>