[三流君]
[VBAで楽しく]
[VBA IE 操作]
−−> No.117 InternetExplorer操作 .Silentを使用したけど....
InternetExplorer操作 .Silentを使用したけど....
メルマガ発行内容
<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 |
そこで、
.Silent = True コイツの出番でしょ。
^^^^^^^^^^^^^^^
下記のように組み込んで実行する・・・結果は、
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 |
実行結果は、同じだった・・・
オイオイ、勘弁してよ・・・
こうなったら、スクリプトをツブシテヤル。
読み込み完了後に、""をセットしてスクリプトを消してやるぞ、
といきがって下記のようにしてみるが・・・
HTMLソースの読み込み完了を
.ReadyState で判断後、
objIE.Document.Scripts(0).Text = ""
と、スクリプトのオブジェクトをつぶしにかかるが、、、
ダメでした。
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 |
余談:HTMLソースの表示
^^^^^^^^^^^^^^^^^^^^^
Debug.Print objIE.Document.documentElement.outerHTML
と
.Document.documentElement.outerHTML で表示できました。
前、.Document.All(0) としてましたが。
まぁ、お好きなほうで。
/*
* 4.いい加減、頭にくるが、フト初心に帰ると・・・
*/
いい加減、出来なくて、頭にきます。
.Silentなんで効かないんだよ。
^^^^^^^
一流読者の心の声:バカな三流プログラマーが吠えてるよ。
~~~~~~~~~~~~~~~~~
alertって日本語に直してみろよボケ?
警戒だって、、あっ、警告メッセージは.Silentできないのか?
それは、あたりまえってこと?
JavaScriptの解説ページ、ほとんどが、
メッセージのダイアログ表示をaleatで説明しているけど、
う〜ん・・・
こんにちは と 警告しているサイトが日本には多いのか。
まぁ、ホントに18歳以下禁止です、と警告メッセージしているのもあるけど。
/*
* 5.セキュリティの設定
*/
あとは、セキュリティの設定でJavaScriptなどをOFFにしてから巡回作業。
そんな感じなんだけど、セキュリティをいじる、そんな簡単なプロパティが無い。
※あったら、マズイんだけど。。。
-【けんぞう!】---------------------------------------------------------
転職関係、在宅プログラマー、SOHOの広告まとめました
http://www.ken3.org/etc/500yen/zaitaku.html いろいろとあるので転機の人はぜひ
登録料無料、匿名で探せるので在宅で小金稼ぎの人も見てね
~~~~~~~~~~~~~~~~
オレ様、私は、SE様だ、月給30万以上ボーナス100万を探すのもありだよ。
私にみたいにVBA少しできるぐらいだと仕事無いよ・・・
と軽く言われても匿名なら気にならないし(笑)
逆にこんな簡単な仕事で月給27万貰えるの?って会社もあるし、世の中イロイロ。
http://www.ken3.org/etc/500yen/job.html
------------------------------------------------------------------------
/*
* 6.終わりの挨拶
*/
今回は、
IEの操作で、
.Silent = True
を探ってみました。
が、かわす代替案も無く、意味無いメルマガになってしまった・・・
私も作ろうとしている(闇の違法ツール?)
^^^^^^^^^^^^^^^^^^^^
自動巡回プログラムでは、こんにちはの挨拶メッセージで止まる、
自動データ登録処理では、"登録します"のメッセージでやられそう・・
う〜ん・・・
不思議なIEお嬢様、まだまだ攻略できそうにないよね。
えっ、Excel姫やAccessお姉さまも攻略して無いダロって?
※う〜ん、実力無くて、なかなか、攻略できなくて。。。。
何かの参考となれば幸いです。
Excel/Access大好き、三流プログラマーKen3でした。
フィードバック
VBA系の→[掲示板]←を覗く、質問を書き込む
評価・感想
ページフッター(リンクや広告など)
[三流君(TOP ken3.org へ戻る)]
-- [VBA系TOPへ]
---- [VBA系バックナンバー目次へ移動]
------ [VBAでIEを操作 CreateObject("InternetExplorer.application")]・・・実は当店一番人気、VBAでIEを操作するサンプルです
------ [VBAでOutlookの操作 CreateObject("Outlook.Application")]・・・Outlookを使い、メール関係の処理です
------ [Access から Excel 連携 CreateObject("Excel.Application")]・・・人気のAccessからExcelへデータ書き出しなどです
------ [AccessのUserForm/サブフォームを操作]・・・アクセスでフォームを使ったサンプルです
------ [Accessのレポートを操作]・・・レポートを操作してみました
------ [Access クエリー関係やその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です
------ [Excel UserForm(ユーザーフォーム)を操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
------ [ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
------ [Excel関係 関数、その他]・・・その他Excel関係です
------ [VBAでテキストファイル(*.txt,*.html,*.csv)の操作]・・・テキストファイルを使ったサンプルです
------ [VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます
広告
-- [通販系の売れ筋広告へ] ←主に楽天やAmazonのランキングです
blog
-- [三流君の作業日記] ← 日々の作業を少々
-- [通販あしあと] ← 通販ページの足跡を一覧で羅列
書籍の購入
Webだけじゃさすがに勉強しきれないので、プログラミング関係の書籍も読んでみては??
コンピュータ書籍の発送がハヤイ専門店
コンピュータの本・専門店
|
※種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。
お奨め本の目次を見るだけでも勉強になったり
|
amazon.co.jpでキーワード別チェック
下記、私が設定したキーワードですが、こんな感じで資料や書籍を探ってみては?
[VBA全体を把握する] -- やはり全体をさらっと見たいですよね。
[SQL関連でDB力UP] -- システムはデータベース設計が重要
[ADO接続を探る] -- VBAなのでADO接続を押さえておく
[Windows APIを探る] -- さらにAPIになて知ってれば強力だ!
[.NETを探る] -- と言っても時代は.NETに流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・