[VBAでIE操作(TOP)] [IE関係記事一覧] [IE関係ブクマ] [三流君(TOP)] [VBA(TOP)] |
はじめは[WebBrowserを参照設定]から入り 小さな[IE操作のサンプル]でTEST 次に[少し大きなIEを使ったサンプル] にチャレンジしたり |
よく使う.Document:の解説 [.Forms]で入力処理 [.Links]でリンク情報取得 [.Images]で画像の情報 [.Frames]でフレーム処理 [.Script]でスクリプト処理 |
IE,WebBrowser: [IE プロパティ(各種設定)] [IE メソッド(イロイロな動作)] [IE イベント(発生後処理)] |
挨拶:VBAで(ExcelやAccessなどから)InternetExplorer WebBrowserを操作してみたいと思います。
呪文のような Set objIE = CreateObject("InternetExplorer.application")でVBAからIE操作を楽しんでください・・・
百聞は一見に〜こんなことができます。
意外と、解説を聞くよりも現物・動くサンプルコードを見た方が速かったりします。
そんな急ぎのアナタにお勧めのコースは、
小さ目のテストコード
[IE操作の小さなコード]
をTEST実行したり、アレンジしてコードと動きを確認するとイメージがつかみやすいと思います。
質問で多いログイン系の処理は
[三流君 IE操作 VBSでJRA-IPATログインを例題に新しいウインドウを処理] ↑Youtubeで大きく見る |
←のソースコードと簡単な解説は [JRA IPAT操作関係?] を参考にして 探り方や処理をみてアレンジしてください。 また、他のログインサンプルとして ・ログインとデータ取得[JRA IPATのページから単勝の表を取り込む] ・[VBS で IEを使用して楽天市場にログインしてみた] ・[VBS IE操作で alt=のボタンを探して押す方法] ・[VBS IE操作でBlogにログイン ブログの入力・登録処理] など、少し書いたので、何かの参考となれば・・・ |
下記、手前味噌ですが、アクセスの多いサンプル例です。何かの参考となれば
連続実行の注意?を含めて、入り口はここから?
[ExcelのA列の単語を翻訳サイトにセット取得を自動で連続実行]
で、1.webページの表示 2.データのセット 3.ボタンを押す 4.結果の取得 と 流れはそろっていたりするので、チェックが多いです
あとは、
・[Excel A列の値(本タイトル)をWebブラウザーにセットする]
・名前の付いた表を取り込むには、[VBA IE操作 表の取り込み(質問 CMEのデータ取得について)]
・乱暴に[VBA IE操作 サイトを全選択してEXCELシートへコピーアンドペーストにチャレンジ]
・データ登録系[ブログ(blog)にデータを登録する]
・ボタンを押したい系[Nameやidの無い、名無しのsubmitボタン 押すには.Value で一致するボタンを値で探して.Click]
↑など、動くサンプルがあるので使ってみてください。
ページの作りや情報のまとめ方がヘタなので、重複していたり、ほしい情報が隠れていたり...
無事に情報が見つかることを願いつつ、大分類・目次の紹介から始めます。
さて、IE操作 Documentの森・WebBrowserの山を頼りないガイドの三流君と一緒にさまよってみましょうか!!!
このページ 三流プログラマー的解説がIE操作方法(プロパティやメソッド)の入り口として何かの参考・お役に立てれば幸いです。
1.参照設定はじめは[WebBrowserを参照設定]で設定すると、プログラム作成時に .(ドット)を押すとプロパティやメソッドが表示されるのでプログラムが作成しやすいと思います。 2.Document 文章の処理IEで読み込んだページ(文章・ドキュメント)の操作なので、 3.プロパティやメソッド、イベントについてIE,WebBrowserのプロパティやメソッド、イベントを知りたいのですが、ヘルプが付いて無いので |
読者の声:テメエの(三流プログラマーの) くどい説明、わかりにくいサンプル、手前味噌・自己満足のリンクを見るよりも、自分で調べるから、正式な資料やヘルプのURL と 調べ方・操作方法を書いてくれれば 自分で見て調べるからさ、さっさと教えな。
そうですか、、、
私がIE操作、プロパティやメソッドを探る方法 を ネタばらしすると(もうネタバレしちゃうの?もっとひっぱろうよ、ページをたらいまわしにしようぜ(おぃぉぃ))
・[参照設定] ・・・ HTML Object Library と Microsoft Internet Controls を設定しましたか?まだならぜひ初めに設定してください。
・[F2を押して、オブジェクトブラウザで遊ぶ]・・・ ↑参照設定後、F2オブジェクトブラウザを使ってみたりすると面白いかも。
現物、プログラムを動作させながら(ハマりながら操作する)感じは、
・[STOPで止め ウォッチ式 を使う]・・・プログラムを途中で止めて objIEの変数の中を直接見にいったり
MSDNとGoogleを検索:F1のヘルプがあれば(効けば)一番楽なんだけど、IE系の説明・ヘルプがF1を押しても出ないので
・[三流君 が MSDN で InternetExplorer の 資料を探す] ・・・ まぁ英語のページは嫌いだけど、MSDNから頑張って探したり
↑だとツライので、最近はGoogleの検索を主に使っていたり↓
・[番外編 GoogleでoIE,objIE,WebBrowserをKeyWordにして検索]・・・検索のキーワードがなかなか思いつかないと思うので私のお気に入りのキーワードを紹介します。(読者の声:だったら先に書けよ)
こんな感じで、探ってます。目新しい画期的な回答で無くスミマセン。
少し、情報を整理したつもりが、読者の声を聞くとリニューアル前の方が読みやすかったと評判良かったり
一度、こちらも見て下さい。
私が弱い・横浜ベイファンなので、マシンガン打線の昔話ですが [No.138 アイツが打てたから、オレも打てる。マシンガン打線] ← アイツ(三流君)がやれたんだったら、オレも(アナタも)やれるって感じの心理で、ソフト作りや他の仕事も まぁ同じようなもんで、成功例があると自分もやればそこに行き着くことができる(やれる)
そんな↑感覚(やれる)を持ってもらいたいので、あえて動作動画から紹介します。※VBAでIE操作は簡単にできると心に暗示をかけてから、最後まで三流解説を読んでくださいね。みなさんなら必ずできます
なかなか、うまくいかなくても[プログラマー発芽の条件]は、人それぞれ違うので、私の三流解説ページが栄養(キッカケ)となって、近い未来で覚醒(発芽)してもらえるとうれしいです。
すぐに私みたいな、失敗続きの三流プログラマーを越えられますよ皆さんなら。
※私、三流君を踏み台にして、読者の皆さんは、システム開発の世界で羽ばたいて下さい。
[後輩に追い越される三流な先輩]←こんな感じで後から来た皆さんにスグに追い越されれるなぁ と思いつつ(笑)
※※三流解説・三流コードが少しでも参考になったらうれしいなぁ〜
処理のパターンは、
1.オブジェクトの作成・・まずは、IEを起動したり、起動済みのIEを捕まえたり
2.ページを表示させる・・次は、処理したい目的のページを表示させます。
3.データを取得したり、セットしたり、HTML文章 .Documentの処理
3.1 次のページ や 新しいウインドウの処理 ・・ リンクから次ページに飛んだり、フォームにデータをセットして送信・登録したり。検索データをセットしたり。
3.2 ↑で、次のページに処理が移り、3へ戻る(繰り返す)
4.終了処理
そんな感じかなぁ※おおざっぱ過ぎだろ・・・
※まぁ、↓これを貼り付けて、実行してみてください(Vista IE7はこれだと動かないけど)
|
脱線した、話を戻して:
今から書く リニューアル後のページも捨てたモンじゃないぞ(手前味噌・自分で言うなよ(笑))
まずは、IEを起動したり、起動済みのIEを捕まえたり、
処理するオブジェクトを作ります
初めの入り口は 大きく2つじゃないですが、
ア.Set オブジェクト変数 = CreateObject("InternetExplorer.Application")
オブジェクトを変数に代入してから オブジェクト変数.メソッド 変数.プロパティ みたいに使う方法
※あっ忘れてた、0番目本当の一番初めとして、ぜひWebBrowserの参照設定→ [VBAから IEを使うための 参照設定の方法] を 初めに見てください。※※特にこれから始める人は。
次の方法は、
イ.ExcelのUserFormにWebBrowserのコントロールを貼り
コントロール名.メソッド コントロール名.プロパティ
※実際の貼り付け方、手順は [番外編 Excel UserForm に IEを貼る] を 見てください。
最後、表示させない方法もあって(少し特殊ですが)
ウ.As HTMLDocumentと.createDocumentFromUrlで文章を読み込み
MSHTMLを参照設定後、As HTMLDocument で変数を定義して、.createDocumentFromUrlでHTML文章を読み込みデータを取り出す。そんな方法もあります。
詳細・手順は[MSHTMLを参照設定後、As HTMLDocument と.createDocumentFromUrlで文章を読み込み使うテスト]を見てください。
※↑は、Documentの操作に慣れてきたら使ってみてください。初めは画面が表示されていた方がテストやデバック時に便利だと思います。
まぁ、どれから入っても .メソッド .プロパティ を 探らないといけないのですが。。
新規にCreateしないで、今表示されているIEを使ったり、新しく起動したIEを使いたい、そんな場面・処理があると思います。
思いつくのが、CreateObjectと対になるGetObjectを使用して、GetObject("InternetExplorer.Application")で表示済み・起動済みのIEを使用できれば簡単なのですが、なぜかうまくいかなかったので(もしかして私のミスかも)、最近は違う方向から攻めてます(別な方法を使ってます)。
ア.パターン的にCreateObject("Shell.Application")から表示されているIEを探してます。
百聞は一見に〜三流君はこんな取得方法を使ってます。
起動済みIE、操作済み、既存の表示済みWEB画面を操作したい そんな時は、
↑document.URLで一致するIEを判断して、使用してみました。
ソースコードと簡単な解説は [XXXXさんへ 起動済みIE、操作済み、既存の表示済みWEB画面を操作したい]を見てください
イ.新しくIEからスクリプトで開かれたIEなどを探す
Set newIE = objSHELL.Windows(objSHELL.Windows.Count - 1)
↑新規で起動した IE が 必ず・絶対に一番後ろと決め付けて組んだプログラムです。(プログラマーに絶対は無いだろクソ三流って感じですが・・・)
コードは[新しく開かれたIEを探す]を見てください。
番外編 蛇足:もしかしたら、新規のIEはWebBrowserのイベントで捕まえる、こっちのほうが操作し易いかなぁ。
[新規のウインドウ(IE)が起動する イベントを見る。]
↑WebBrowser1のNewWindow2 新しくウインドウが作られる処理で、
Set ppDisp = Me.WebBrowser2
と1つ呪文を書きます。(呪文ってオイ、、、)、余談です読み飛ばしてください。
次は、処理したい目的のページを表示させます。
.Navigate の メソッドにURLを渡したりして、実行します
objIE.Navigate "http://www.google.co.jp/" 'こんな感じでGoogleのページを表示
ページの表示.Navigateのメソッドを使う
ア.単純に指定したURLを開く ページの移動 目的のページを表示する objIE.Navigate "http://www.xxxx.xxx/" 文字列でURLを指定するだけです。 |
イ.第二引数 Flagsを指定して隣のタブでURLを開く objIE.Navigate2 "http://www.xxxx.xxx/", &H800 '新しいタブで表示 2048(16進数で800) ※.Navigate2←2に注意 |
表示を待たないと、表示待ちを入れないで いきなりオブジェクトに触りに行くと(ドキュメントなどのオブジェクトにアクセスすると) 相手の心の準備ができていないみたいで(オブジェクトの展開処理が間に合わないみたいで)、どこ見てんのよ(古)と怒られるじゃなかった、実行時エラー -2147467259 (80004005) Document メソッドは失敗しました ・・・など、エラーで怒られるんですよ。
なので、objIE.Navigate のページ移動後に相手の準備ができるが確認します。
私がよく使っている方法は、
While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。
DoEvents
Wend
みたいに、.Busy と .ReadyState の状態を見てます
そんな試行錯誤は、
・[.Busy プロパティ の テスト IE操作]
・[.ReadyState プロパティ の テスト IE操作]
を見て笑ってください。
Document 文章の処理なので、大きく分けると、下記のような感じになります
こんなこと や あんなこと できます、、の紹介を目的として、サンプルや過去に作った動画を紹介します
手前味噌のサンプルとリンク:
・[過去のメルマガIE記事]・・・メルマガで書いた記事。こっちが好きな少数派も居たりして?
・[IEの操作 ブログ記事]・・・小さな単位で抜き出してBlogにUPしただけ
・[IEを使った三流サンプル] ・・・ 少し長めのサンプル
や
声がうわずって、[え〜と]、[こんな感じ] の単語連発で 間が悪く 聞き取りにくい
・[恥ずかしい解説動画(VBA IE動画解説)]・・・YouTubeに解説、操作動画アップしてます。
さらにひどい、
読者説明よりも SEOが目的 なのか知らないが、
・[変なブックマーク(WebBrowser系)]・・・はてなブックマーク使ってみました。使い易いですね。
ほんとに、基本動作の骨組みだけのサンプルです。肉付けして皆さんが活用できると使えるといいなぁ・・・
※初めは、参照設定から設定して、単純な表示から遊んでみてください。
'参照設定 Microsoft Internet Controls(Microsoft Browser Helpers)
'Microsoft HTML Object Library の 2つを忘れずに
'参照設定の方法は、 http://www.ken3.org/cgi-bin/group/vba_ie_object.asp をみてください。
|
↑単純に表示しただけなので、ここから先が長いのですが、、、
イロイロな処理の中で多いのが、表の取り込みです。
・Webから表 TABLE データを取り出したい(Webクエリーがあるけど、自分で取得したい)
そんな処理のサンプルは↓
[VBA IE Webページの表を取り込む]
↑手前味噌サンプルですが、表の取り込みでアレンジして使ってみてください。
・Webページからファイルをダウンロードしたい、
名前をつけて保存 や 対象をファイルに保存、そんな操作時は、
[No.120 URLDownloadToFile APIを使用してWebからファイルをダウンロードしてみた]
を見てください。APIと言ってますが意外と簡単ですよ(キャッシュの問題があるけど)
・JavaScriptから出力される Aleatやconfirm の確認・メッセージ などで処理が止まる。OK はい などを押したいけど、何かいい方法ありませんか?
と、質問をいただく。
少し変な方向でアプローチしてみました。
読み込んだページに 小細工で同名の関数を.createElement SCRIPTで作成して、.appendChildで追加そんな感じです。
※ポップアップメッセージを動作させない、そんなセコイ方法です。
三流解説は
[暗証番号入力 confirm確認メッセージを無効にする JRA入出金メニュー]や
[VBA IE操作 ニセのpromptとalert を 挿入する そんな実験]を試してみて試して下さい。
まぁ、↑はかなりセコイので、プロはこっちかなぁ?↓
VBAでHTMLのページ内でJavaScriptのConfirm関数で表示されるメッセージのボタンを自動的にクリックする
http://q.hatena.ne.jp/1248657374
↑で、
ポップアップウインドウの件が解決してるみたいです。
こちらを参考にして、作成してみてください。
※私も精進しなくては、、、と思いつつ、最近は、何も進んでいなかったり。。。
いろいろと攻略していない未解決や問題点があって
・画像を自動でアップしたいので INPUTタグTYPE FILEにファイル名を入れたい。
↑これも、セキュリティを突破できてません。
全ての質問には、答えられませんが、リクエストや質問があったら、
[作者(三流君)に質問する] から 気軽に送ってください
まだまだ、書かないといけないIE操作 プロパティやメソッドなどの組み合わせがあるのですが、このあたりで逃げるように失礼します(オイオイ)。更新が遅いけど温かく見守ってください 更新中 まだまだ書きかけ
いろいろな表現があって、かえって迷ってしまうかもしれませんが、数をこなすと見えてくるので、私のサンプルだけじゃなく、いろいろなサンプルを探して見てください。[番外編 GoogleでoIE,objIE,WebBrowserをKeyWordにして検索]にお勧めのキーワード検索方法を載せてます
ヘルプはどこにあるの?三流なのにどうやって資料を探しどこで勉強したの?
と、質問をいただきます。(自分で調べていきたい読者様の前向きな問い合わせです)
やはり本家Microsoft.comのよく聞く?MSDNを探ってみるのも・・・(あまり深く見ると楽しむ前に挫折しかかるので、下記はほどほどに・・・)
英語だけどMSDNの下記の項目を見るとオブジェクトの階層構造がわかりやすいと思います。
MSDN Library - http://msdn.microsoft.com/en-us/library/ms123401.aspx
□□□|--- Internet Explorer Development http://msdn.microsoft.com/en-us/library/aa155133.aspx
深いので省略(オイオイ、意味無いだろTOPからたどらせないと)
□□□□□□□|--- WebBrowser Control http://msdn.microsoft.com/en-us/library/aa752040.aspx
の
IE Reference for Visual Basic Developers ↓に深く埋まってます(英語ですが)
[http://msdn2.microsoft.com/en-us/library/aa752043.aspx] が 一覧で、その 下に、
InternetExplorer Object [http://msdn.microsoft.com/en-us/library/aa752084.aspx] をクリック
document Object [http://msdn.microsoft.com/en-us/library/ms531073.aspx] をクリック
Collections の 中の all [http://msdn.microsoft.com/en-us/library/ms537434.aspx] をクリック
などして、さまよいながら・・・探したりしてます。(三流ガイドの私も迷ってます)
続きは、[IE Web Browser のプロパティ・メソッドを調べる] を 見てください。
検索エンジンやリンクから、せっかく私のサイトに来ていただいたのですが、下記2つの検索結果がかなり参考になったり・・・するのでは???
IE|oIE|WebBrowser|objIE 魔界の 2つをキーワードにしてGoogleで検索する
(↑かなりの確立で有効な回答が得られると思います、先輩方の回答を見ると謎が解けると思います。私もすらっと回答できる、そんな人になりたいですね。。。)
↓あとは、パターン的にoIE,objIEと変数名を定義している人とWebBrowser1.が多いので、
oIE|objIE|WebBrowserをキーワードにしてGoogleで検索する
も有効かなぁ。※短いサンプルなどが見つかり、参考となるのでは?
さらに検索を紹介すると、[InternetExplorer.application]をキーワードにしてマイクロソフト内を検索する
などなど・・・
↑1歩1歩独自で進めたい人はこんな感じで、実際のコード や 掲示板・ML上の自分と似た質問のやりとりを見ながら進めるのがいいと思います。
※また、BBSやMLの空気を読んで(過去ログも読んで)、上級者がいらっしゃる掲示板に質問を投げてみるのもひとつの手です。
検索に迷ったら(IE操作の道に迷ったら)、objIEやoIE さらに InternetExplorer.application や Document.All などをキーワードにGoogleやYahooで探ってみてください。
脱線すると、google検索のワンダーホイールって面白い
↓私のよく使う変数 objIEで検索すると
objIEの結果をワンダーホイールで表示
↑なかなか、楽しめそうです。※関連項目の全てが線でつながらないけど(全てつながるとかなり面白いのに。)
googleってすげぇなぁ。
過去のメールマガジンのリンクが長かったので、下記に移動しました。
[IE操作 メルマガ 一覧]
よろしくお願いします。
改版履歴 更新情報:過去のIE操作の解説はこちら↓(IE6+XP,IE7+XP の記事です)
2009-12-01:[過去の解説 vba_ie_20091201.asp]
2009-06-01:[過去の解説 vba_ie_20090601.asp]
2009-02-01:[過去の解説 vba_ie_20090201.asp]
2008-05-01:[過去の解説 vba_ie_20080501.asp]
2007-08-31:[過去の解説 vba_ie_20070831.asp]
2007-05-20:[過去の解説 vba_ie20070520.asp]
もあわせてみてください。
(↑もしかして書き直さない過去の解説の方がよかったかも?(笑))
ここまで、読んでいただきどうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
[三流君(TOPへ)] / [VBAで楽しく] / [記事一覧] |
カスタム検索
|