概要: |
<InternetExplorer操作 .Silentを使用したけど....>
どうも、三流プログラマーのKen3です。 今回は、 InternetExplorerの操作で、.Silentを使用したけど、 JavaScriptの画面表示が止まらない、止めたい、そんなお話です。 なかなか、相手のIEお嬢様は強敵でした・・・/* * 1.今回のキッカケ */
掲示板に下記の質問をもらいました。 ----- >IEのSilentをtrueにしても >JavaScriptのalert("あああ")は表示されてしまうの >でしょうか? >alertを表示しないようにするにはどのようにすればいいので >しょうか?教えてください。 ----- silent(無音)かぁ。/* * 2..Silentプロパティ */
IEの.Silent、調べてみると、 http://msdn.microsoft.com/workshop/browser/webbrowser/reference/properties/silent.asp > Silent Property > Sets or retrieves a value that indicates whether > the object can show dialog boxes. だってさ、これを読者から教えてもらった、 エキサイトの翻訳 http://www.excite.co.jp/world/text/ にかけてみると > オブジェクトがダイアログ・ボックスを示すことができるかどうか示す値を > セットするか検索します。 だって、なんとなく、これでいいような気がするんだけど。。。。 > Dialog boxes and messages can be shown. > Critical errors and security alerts are not supressed. > true Dialog boxes are not shown. も変換すると、 >ダイアログ・ボックスとメッセージは示すことができます。 >重大なエラーおよびセキュリティ警報はsupressedされません。 >真実のダイアログ・ボックスは示されません。 セキュリティなど警告以外は、出来そうなんだけど・・・ ^^^^^^^^^^^^^^^^^^^^^^^^^^/* * 3.実際にやってみる */
掲示板に書くって、よほどのことなんですよね。 あたりまえの話ですが、困っていて、四方八方探したけど出来なかったり。 だから、マニュアルに書いてあるだろ・・できるハズだ!!なんて言わないで、 まてよ?と思いテストしてみる。 http://www.ken3.org/vba/test117.html に下記のHTMLを作成しました。 <BODY> <h1>メッセージ画面が表示されるWebページあるよね</h1> <hr> <script type="text/javascript"> <!-- alert("Helloとかやられると・・・"); // --> </script> <noscript> JavaScriptONでテストしてください。 </noscript> まったく(笑)自動巡回だと困るんだよね・・・(オイオイ) </BODY> と、 alert("Helloとかやられると・・・"); で、画面にメッセージボックスを出してみました。 まずは、 http://www.ken3.org/vba/test117.html でテストすると、おっ、簡単にメッセージ出せますね。 下記のような、巡回プログラムだと、 オイオイ、ずっと.Busy=Trueのままで、ループから抜けれない・・・ 原因は、alertで画面にダイアログが表示されているから、 そこから先に読みに行かない。
Sub ie_test() Dim objIE As Object 'IEオブジェクト参照用 'インターネットエクスプローラーのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True '見えるようにする(お約束) '文字列で指定したURLに飛ぶ objIE.Navigate "http://www.ken3.org/vba/test117.html" '表示終了まで待つ Do While objIE.Busy = True '何もしないループ(笑) DoEvents Loop MsgBox "巡回終了" End Sub |
Sub ie_test_Silent() Dim objIE As Object 'IEオブジェクト参照用 'インターネットエクスプローラーのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True '見えるようにする(お約束) '.Silentを使ってみた が True/False どちらもダメだった・・・ objIE.Silent = True 'なんで効かないの? '文字列で指定したURLに飛ぶ objIE.Navigate "http://www.ken3.org/vba/test117.html" '表示終了まで待つ Do While objIE.Busy = True '何もしないループ(笑) DoEvents Loop MsgBox "巡回終了" End Sub |
Sub ie_test_ReadyState() Dim objIE As InternetExplorer 'IEオブジェクト参照用 'インターネットエクスプローラーのオブジェクトを作る Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True '見えるようにする(お約束) '.Silentを使ってみた が True/False どちらもダメだった・・・ objIE.Silent = True 'なんで効かないの? '文字列で指定したURLに飛ぶ Debug.Print ".ReadyState=" & objIE.ReadyState objIE.Navigate "http://www.ken3.org/vba/test117.html" Debug.Print ".ReadyState=" & objIE.ReadyState '.ReadyState=1を判断する(ロード中以外になったら抜ける) Do While objIE.ReadyState = 1 'READYSTATE_LOAD = 1 DoEvents Debug.Print ".ReadyState=" & objIE.ReadyState Loop Debug.Print objIE.Document.documentElement.outerHTML 'スクリプトをつぶす(オイオイ) objIE.Document.Scripts(0).Text = "" '表示終了まで待つ Do While objIE.Busy = True '何もしないループ(笑) DoEvents Loop MsgBox "巡回終了" End Sub |
読者様より、下記のメッセージをいただきました。 ------ >いつも拝見させていただいています。 > >「InternetExplorer操作 .Silentを使用したけど....」についてですが、 >IEのツール→インターネットオプション→セキュリティ→レベルのカスタ >マイズでアクティブスクリプトを無効にすれば巡回できるようになると >思います。 > >私も長い間この問題をクリアしようとあれこれ探していたのですが、 >現時点では以上の方法でなんとかしています。 > >参考になれば幸いです ----- なかなか、大変みたいですね・・・。
UWSCというスクリプトソフトを使って、バックグランドで起動し、アラート画面が表示されたらウィンドアクティブにしてOKボタンを押すことが可能です。
WHILE TRUE
WID=GETID("記述:")
CTRLWIN(WID, ACTIVATE)
SCKEY(WID, VK_ENTER)
WEND
サンプルソースです。
三流解説を読んでいただき、どうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、※質問や感想は、気軽に送ってくださいね。
[三流君 VBAでWebBrowser IEを操作する] / [三流君 VBAで楽しくプログラミング] / [AB型の変わり者 三流プログラマー Ken3 三流君Top]
大分類:[Document.Forms(入力処理)]
/ [Document.Links(リンク情報)]
/ [Document.Images(画像情報)]
/ [Document.Frames(フレーム処理)] | |
F1でヘルプを見たり、デバック時にDebug.Print使ったり、イミディエイト ウインドウで簡単な確認したり。 項目別に↓にプログラマーの本音?それとも建て前?的な記事をまとめました。お探しのジャンルを選択してください。 項目別に↓に人気の記事をまとめてみました。お探しのジャンルを選択してください。 Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など Blog:[三流君の作業日記]/
[objIEを使用したサンプルコードを見る]/
広告-[通販人気商品の足跡] |
三流プログラマーのKen3 が 皆さんの質問にお答えします
と カッコつけて言っても、実力不足ですべての質問に回答することはできないのが現実なのですが、できる範囲で 三流的な逃げ手 や 解決方法 を探します(回答します)。
感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。