No.2ベストアンサー
- 回答日時:
objIE.Document.Forms(0).Elements("氏名").value = "山本山"
objIE.Document.Forms(0).Elements("国").value = "日本"
objIE.Document.Forms(0).Elements("SUBMIT").click()
なる要素が存在しないからエラーになるのです。
値をセットするのは
<input type=text name=ship-name maxlength=50 size=50>
等の要素です。ページのソースをよく解析してみて下さい。
それから、ブラウザーの処理を待つ必要もあります。
そのためのループも必要です。
以下で一応動作します。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim objIE As Object
Dim strURL As String = "https://order.store.yahoo.co.jp/cgi-bin/wg-reque …
objIE = CreateObject("InternetExplorer.application")
objIE.Navigate(strURL)
objIE.Visible = True
While objIE.ReadyState <> 4
While objIE.Busy = True
My.Application.DoEvents()
End While
End While
objIE.Document.Forms(0).Item("ship-name").Value = "山本山"
objIE.Document.Forms(0).Item("ship-country").Value = "日本"
objIE.Document.Forms(0).Submit()
End Sub
この回答への補足
yyr446様、大変有り難う御座いました。
今会社から家に帰り入力しデバッグをしてみますと、下記の箇所で例外エラーが発生しました。
会社でデバッグをしましたところ旨く完璧に動きましたのに、家のPCではエラーです。
どうゆうことでしょうか。
不思議です。
While objIE.Busy = True ← この記述で例外エラーが発生
もし、会社のPCと家のPCの環境が違うと言えば、家のPCは、VistaX64で会社のPCはXP32です。
それが影響しているのでしょうか。?
以上色々お聞きしますが宜しくお願い致します。
yyr446様、大変有り難う御座いました。
お陰様で動きました。
非常に嬉しいです。
60歳になって久々の感激です。
"Item"が分からなかったです。
HTMLのソースを見まして、"ship-name"は分かってましたけど
それでもエラーが出ましたのでもう駄目かなーと思いました。
"Elements"では駄目なのですね。
非常に感激です。
有り難うございました。
そして、もう一つお聞きしたいことが有るのですが、分かる範囲で結構なのですが、デスクトップ上でポップアップで出るメッセージに対して、そのメッセージに応じて、OKとかキャンセルとかのボタンをプログラムで押すことって可能でしょうか。
それは又プログラム的にはどんな方法をとれば良いのでしょうか。
宜しく御願い致します。
No.4
- 回答日時:
Do While objIE.Busy
DoEvents()
Loop
Do While objIE.readyState <> "4"
DoEvents()
Loop
の方がよいかも
あるいは
Do While (objIE.document.readyState <> "complete")
DoEvents()
Loop
とか、単に
Sleep(2000)
で待つだけとか、ブラウザーのバージョン、Windowsのバージョン
VBのバージョン等によって違いがあるのかも知れません。
ちなみに、VBによるIE操作は正統派じゃなく、おまけの機能みたいなものと思った方ほうがよろしかろうと思います。本格的にいろいろやろうとすると、次から次へと壁につきあたります。
この回答への補足
やっと原因がわかりました。
VistaX64が災いしているようです。
私の部屋の隣の孫のPCですが、XPが入っておりますが、それに
念のためインストールし、修正していただいたリストを走らせてみますと旨く完璧に動きました。
ところが、VistaX64のPCでは、ソースリストを入れてデバッグを行ったら全く動かずフリーズに近い状態になります。
このことから、VB2008そのものが、VistaX64に対応していないのかも知れませんね。
XPでは全く問題なく動作します。
以上宜しく御願い致します。
yyr446様、色々有り難う御座いました。
結果は、家のPCでは、以下のソース全てに渡り例外エラーが出ました。
教えて戴く前の一番最初に出たエラーと同じです。
ですから、私も前に進めなかったのです。
64bitと32bitの違いが出てきているのでしょうか。
それも、悪役のVistaですからね。VistaX64です。
いろいろと問題が有るのでしょうね。
一つ一つ地道に解決して行きたいと思います。
有り難う御座いました。
これが完成すれば、株式チャートのポップウインドウのメッセージ処理を行いたいと思っております。
有り難う御座いました。
以下while文を抜いても氏名入力等にエラーが出ます。
While objIE.ReadyState <> 4
While objIE.Busy = True
My.Application.DoEvents()
End While
End While
'以下の文にもエラーがでます。(Vista X64)
objIE.Document.Forms(0).Item("ship-name").Value = "山本山"
objIE.Document.Forms(0).Item("ship-country").Value = "日本"
objIE.Document.Forms(0).Submit()
No.3
- 回答日時:
「デスクトップ上でポップアップで出るメッセージ」って、何でしょうか?
この質問の関連と考えるとブラウザーに読み込んだページのjavascriptがポップアップ表示させている子ウィンドウ(中身はHTML)の事でしょうか?それだと操作できる可能性はあります。
DOM要素(エレメント)をたどって、その要素のクリック動作のイベントをVBから行えばいいのです。あるいはjavascriptの関数をコールするだけですむかもしれません。DOM要素(エレメント)がわかれば、VBのIEオブジェクトで操作可能です。人様のページのDOM要素(エレメント)の仕組みを調べるのがたいへんなだけです。DOM要素というのは平たくいえばhtmlのタグでマークされている部分の事です。javascriptというのはブラウザー内で実行されるhtmlファイルに含まれるプログラムコードの事です。このあたりの事を先に研究してみるのをお勧めします。
Webに関係ないポップアップの操作だとすると、そのポップアップを出しているアプリケーションのAPI仕様が無いとまず不可能です。
Windows OS自体が出すWindow(イクスプローラーとかコントロールパネルとか...)なら"Shell.Application"オブジェクトとか"WScript.Shell"オブジェクトで操作できる場合があります。このへんの仕様はマイクロソフトのMSDNにしかないので、日曜プログラマーは苦労します。
yyr446様、早速のご回答有り難う御座います。
yyr446様はご存じかどうか分かりませんが、VTやCTトレーダーのチャートを表示しながら、FXの自動売買なんかをやっていますと、ネットのトラブルやハイトラ等で回線が切れたり、証券会社のサーバーのトラブルでメッセージがポップアップで表示され、「回線の再接続をしますか」というようなメッセージが出ます。
その時にユーザーが見てないと回線が切られてしまいトレードが終わってしまい、損をしたり儲けが無くなったりします。
その為に回線を自動的に再接続するためのソフトが有れば非常に助かるわけです。
そのようなソフトが市販品でありますが非常に高いのです。
又、そのように、IE以外の専用ブラウザ??が多々あると思いますが、証券会社に限らずWEBにたいしてのコントロールは大変なのでしょうか。難しいのでしょうか。
できればそのようなソフトを楽しみながら作りたいと思っておりますが難しいでしょうか。
以上宜しくお願い致します。
No.1
- 回答日時:
出来るページと出来ないページがあります。
以下のページが参考になるかと
http://www.ken3.org/cgi-bin/group/vba_ie.asp
http://www.happy2-island.com/vbs/cafe02/capter00 …
この回答への補足
VB2008にて、下記のように、試験的に作成しましたが、エラーが起き駄目でした。
記述に間違いが有るのでしょうか
どなたか宜しくお願い致します。
-----------------------------------------------------------------
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim objIE As Object
Dim strURL As String = "https://order.store.yahoo.co.jp/cgi-bin/wg-reque …
objIE = CreateObject("InternetExplorer.application")
objIE.Navigate(strURL)
objIE.Visible = True
'ここから下がエラーを起こします。
objIE.Document.Forms(0).Elements("氏名").value = "山本山"
objIE.Document.Forms(0).Elements("国").value = "日本"
objIE.Document.Forms(0).Elements("SUBMIT").click()
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 空白で入力フォームのボタンをクリックしたら、ブラウザの上部からjavascriptで 表示されるアラ 1 2022/05/20 11:16
- ノートパソコン Windows 10 動作改善方法 6 2023/04/26 22:30
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- Access(アクセス) アクセス 意図せずサブプロシージャを移動してしまうのを止めたい 1 2022/09/02 09:19
- その他(クラウドサービス・オンラインストレージ) おすすめのパスワードマネージャは? 1 2023/02/28 20:09
- Chrome(クローム) 入力フォームの履歴を消したい 2 2023/06/29 13:02
- Excel(エクセル) excelvbaでスライドショーを作りたい 2 2023/04/20 14:32
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- その他(ブラウザ) テキストを入れるときの縦線の点滅がそれ以外のブラウザ上にも表れます。 1 2022/07/29 21:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JQuery、セレクトボックスをル...
-
JavaScriptでクリップボードの...
-
マイページはどこを開くの
-
デジタル時計の時刻合わせの方...
-
ウインドウを毎回同じ位置、大...
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
Excelでワードアートや図を常に...
-
PDFを(htmlのように)無限に縦...
-
スクリプトって、何ですか?ど...
-
VBA ポップアップが表示された...
-
Excelで1.2行目だけ固定して...
-
エクセルVBAでフォームのListbo...
-
エクセルでポップアップを出し...
-
一定時間おきにアラームやポッ...
-
[Java] Edgeでのアドレスバー非...
-
VBAで任意のウインドウのサイズ...
-
別フォームから戻ったときのイ...
-
アコーディオンで開かれたパネ...
-
リストビューをスクロールさせ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VBA/HTML】特定のタグ要素に...
-
(VBS) テキストファイル読込で...
-
VC++のデバッガでvectorの要素...
-
WebサイトのHTMLオブジェクトの...
-
VBAでユーザ定義変数名をシート...
-
VBA HTTPを用いたWEB画面の取...
-
PL/Iについて、教えてください。
-
[C++] vector<string> の各要素...
-
MFCを使って、ひとつのkey(CStr...
-
jqueryでtable内容の置き換え
-
Ajax.Updaterで読み込んだ先の...
-
JavaScriptでクリップボードの...
-
ajaxで追加したdom要素にscript...
-
bxSliderで動画をスライドごと...
-
JQuery、セレクトボックスをル...
-
スプレッドシートのチェックボ...
-
どこまでを動的に、どこまでを...
-
jQueryで<body>要素にマウスが...
-
【VB.NET】HTML要素を取得しよ...
-
no confilict で value値が取れな
おすすめ情報