[VBAでIE操作(TOP)]
[IE関係記事一覧]
[IE関係ブクマ]
[三流君(TOP)]
[VBA(TOP)]
はじめは[WebBrowserを参照設定]から入り
小さな[IE操作のサンプル]でTEST
次に[少し大きなIEを使ったサンプル]
にチャレンジしたり
よく使う.Document:の解説
[.Forms]で入力処理
[.Links]でリンク情報取得
[.Images]で画像の情報
[.Frames]でフレーム処理
[.Script]でスクリプト処理
IE,WebBrowser:
[IE プロパティ(各種設定)]
[IE メソッド(イロイロな動作)]
[IE イベント(発生後処理)]


三流君VBAでIE操作 画像・イメージ操作 Document.Images

挨拶:VBAで(ExcelやAccessなどから)InternetExplorer WebBrowserを操作してみたいと思います。
Document.Imagesで、画像・イメージにアクセスできるので、イロイロと操作してみたいと思います。



一覧、頭から Document.Images にアクセスしてみた。

Document.Images で イメージのオブジェクトにアクセスできたので、
Dim objIMG As HTMLImg 'イメージ、図
と変数を宣言してから、下記のループで1つ1つ取り出し使ってみました。
For n = 0 To objDOC.images.Length - 1 'イメージ数ループする。
Set objIMG = objDOC.images(n) 'n番目のイメージを代入
↑あとは、それっぽい、プロパティを書き出してみました。
.src が URL で .Titleが呼んで字のごとくタイトルでした。
サンプルを動かしながら、確認してみてください。

下記、サンプルです。Excel2003 OS:XP SP3 IE8 でテストしました。
まずは、実行して遊んでみてください。
'参照設定 Microsoft Internet Controls(Microsoft Browser Helpers)
'Microsoft HTML Object Library の 2つを忘れずに

'参照設定の方法は、 http://www.ken3.org/cgi-bin/group/vba_ie_object.asp をみてください。

Sub ie_test_img_list()  'イメージ 画像のリスト 一覧を作る
    
'目的のURLを入力する。(URLを指定する)
    Dim strURL As String  'URL入力用
    strURL = InputBox("URLを指定", "URL入力", "http://ie.vba-ken3.jp/test/")

    '結果表示エリアをクリア
    Rows("6:999").Delete Shift:=xlUp

'IEのオブジェクトを新規で作り、表示サイズと場所を調整する。
    Dim objIE   As InternetExplorer  'IEオブジェクト参照用
    Set objIE = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る
    objIE.Visible = True '見えるようにする(お約束)
    
    'IE 画面サイズの調整(表示場所とサイズ)
    objIE.FullScreen = False '= Trueで最大化します。
    objIE.Top = 200    '左上 Y 表示場所の指定
    objIE.Left = 100   '左上 X
    objIE.Width = 800  '横の幅
    objIE.Height = 600 '縦の高さ

'目的のページを表示する
    '指定したページを表示
    objIE.navigate strURL   '文字列でURLを渡す

    '表示完了を待つ .readyState と .Busy を見る
    While objIE.readyState <> READYSTATE_COMPLETE Or objIE.Busy = True 'IEがBusyの間 待つ
        DoEvents
    Wend
    DoEvents

'表示されたHTML文章 ドキュメント にアクセスして、画像の情報をセルに書き込む
    Dim n As Integer 'n番目のカウンター変数
    Dim y As Integer 'Y行目のカウンター変数
    
    'ドキュメント、HTML文章にアクセスする
    Dim objDOC As HTMLDocument
    Set objDOC = objIE.document 'IEの文章をセット

    Range("A6") = "URL = " & objDOC.URL
    Range("A7") = "ページのタイトルは = " & objDOC.Title

    'イメージ、画像を探る
    Dim objIMG As HTMLImg  'イメージ、図

    y = 10
    Cells(y, "A") = "images.Length は(イメージの数は) " & objDOC.images.Length
    y = y + 1
    
    '見出しを付ける。
    Cells(y, "A") = "no(n番目)"
    Cells(y, "B") = "'.src (URL)"   'URL
    Cells(y, "C") = "'.Title" 'タイトル
    Cells(y, "D") = "'.outerHTML" 'HTML
    y = y + 1
    
    'イメージを1つ1つ取り出し、処理する。
    For n = 0 To objDOC.images.Length - 1 'イメージ数ループする。
        Set objIMG = objDOC.images(n)   'n番目のイメージを代入
        Cells(y, "A") = n
        Cells(y, "B") = "'" & objIMG.src   'URL
        Cells(y, "C") = "'" & objIMG.Title 'タイトル
        Cells(y, "D") = "'" & objIMG.outerHTML 'HTML
        
        y = y + 1  '次の行へ
    Next

'後始末
    '終了処理 テストの時は、↓確認して、残しておくと便利ですよ。
    If MsgBox("IEを閉じますか?", vbYesNo) = vbYes Then '終了確認
        objIE.Quit  '.Quitで閉じる
    End If
    '使用したオブジェクト変数もキレイにしてね。
    Set objIMG = Nothing
    Set objDOC = Nothing
    Set objIE = Nothing

End Sub

試行錯誤の動画:[Document.Images にアクセスしてみた As HTMLImg]

画像のURLを指定して、ダウンロードしてみた。

無事、画像の一覧・リストが作れたので、ダウンロードしてみたいと思います。
webからファイルを落とすには [URLDownloadToFile を 使いファイルをダウンロード] を 使うと比較的簡単です。
組み込んで、使ってみました

'OS:XP SP3 IE8 Excel2003でテスト。
'参照設定 Microsoft Internet Controls(Microsoft Browser Helpers)
'Microsoft HTML Object Library の 2つを忘れずに
'参照設定の方法は、 http://www.ken3.org/cgi-bin/group/vba_ie_object.asp をみてください。

'URLDownloadToFile API from URLMON.
Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
"URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal _
szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
'↑ソースの一番上に宣言文を書き込んでください。

Sub ie_test_img_download()  'イメージ 画像のリスト 一覧を作り ダウンロード
    
'目的のURLを入力する。(URLを指定する)
    Dim strURL As String  'URL入力用
    strURL = InputBox("URLを指定", "URL入力", "http://ie.vba-ken3.jp/test/")

    '結果表示エリアをクリア
    Rows("6:999").Delete Shift:=xlUp

'IEのオブジェクトを新規で作り、表示サイズと場所を調整する。
    Dim objIE   As InternetExplorer  'IEオブジェクト参照用
    Set objIE = CreateObject("InternetExplorer.application") 'IEのオブジェクトを作る
    objIE.Visible = True '見えるようにする(お約束)
    
    'IE 画面サイズの調整(表示場所とサイズ)
    objIE.FullScreen = False '= Trueで最大化します。
    objIE.Top = 200    '左上 Y 表示場所の指定
    objIE.Left = 100   '左上 X
    objIE.Width = 800  '横の幅
    objIE.Height = 600 '縦の高さ

'目的のページを表示する
    '指定したページを表示
    objIE.navigate strURL   '文字列でURLを渡す

    '表示完了を待つ .readyState と .Busy を見る
    While objIE.readyState <> READYSTATE_COMPLETE Or objIE.Busy = True 'IEがBusyの間 待つ
        DoEvents
    Wend
    DoEvents

'表示されたHTML文章 ドキュメント にアクセスして、画像の情報をセルに書き込む
    Dim n As Integer 'n番目のカウンター変数
    Dim y As Integer 'Y行目のカウンター変数
    
    'ドキュメント、HTML文章にアクセスする
    Dim objDOC As HTMLDocument
    Set objDOC = objIE.document 'IEの文章をセット

    Range("A6") = "URL = " & objDOC.URL
    Range("A7") = "ページのタイトルは = " & objDOC.Title

    'イメージ、画像を探る
    Dim objIMG As HTMLImg  'イメージ、図

    y = 10
    Cells(y, "A") = "images.Length は(イメージの数は) " & objDOC.images.Length
    y = y + 1
    
    '見出しを付ける。
    Cells(y, "A") = "no(n番目)"
    Cells(y, "B") = "'.src (URL)"   'URL
    Cells(y, "C") = "'.Title" 'タイトル
    Cells(y, "D") = "'.outerHTML" 'HTML
    y = y + 1
    
    'イメージを1つ1つ取り出し、処理する。
    For n = 0 To objDOC.images.Length - 1 'イメージ数ループする。
        Set objIMG = objDOC.images(n)   'n番目のイメージを代入
        Cells(y, "A") = n
        Cells(y, "B") = "'" & objIMG.src   'URL
        Cells(y, "C") = "'" & objIMG.Title 'タイトル
        Cells(y, "D") = "'" & objIMG.outerHTML 'HTML
        
        'ダウンロード処理を呼ぶ
        Call get_url_file(objIMG.src) 'URLを渡す
        
        y = y + 1  '次の行へ
    Next

'後始末
    '終了処理 テストの時は、↓確認して、残しておくと便利ですよ。
    If MsgBox("IEを閉じますか?", vbYesNo) = vbYes Then '終了確認
        objIE.Quit  '.Quitで閉じる
    End If
    '使用したオブジェクト変数もキレイにしてね。
    Set objIMG = Nothing
    Set objDOC = Nothing
    Set objIE = Nothing

End Sub

'URLを受け取り、ファイルをダウンロードする
'関数内でURLからファイル名を作成する(/を探す)
' 詳細は http://www.ken3.org/vba/backno/vba120.html を見てください。
Sub get_url_file(strURL As String)

    Dim strFNAME As String  'ダウンロード先(パス+ファイル名)
    Dim strWORK  As String  '後ろから/を探し、ファイル名を取り出す
    Dim returnValue
    Dim n As Integer

    'ファイル名を取り出す
    For n = Len(strURL) To 1 Step -1 '後ろから/を探す
        If Mid(strURL, n, 1) = "/" Then
            Exit For  '/が見つかったらループを抜ける
        End If
    Next n
    strWORK = Mid(strURL, n + 1) '/の次からファイル名なのでn+1から
    
    'ファイル名をブックのパス+\+取り出したファイル名とする
    strFNAME = ThisWorkbook.Path & "\" & strWORK
    'strFNAME = "C:\DATA\AAA\" & strWORK と固定のパスでもOKだけど

    'URLDownloadToFile API をコールする
    returnValue = URLDownloadToFile(0, strURL, strFNAME, 0, 0)

End Sub

なんとか、画像ファイルをダウンロードすることができました。

試行錯誤の動画:[Document.Images から 画像のファイル名を取り出し DownLoad してみた]

逃げるように 終わりの挨拶

入り口を間違えないで、みなさんは参照設定から行ってくださいね。
※まだまだ、確認すること、やることいっぱいだぁ。。。




[#MSDN][ページ内のTOPへ戻る]

WebBrowser Control や DHTML など オブジェクトやプロパティの探り方?

ヘルプはどこにあるの?三流なのにどうやって資料を探しどこで勉強したの?
と、質問をいただきます。(自分で調べていきたい読者様の前向きな問い合わせです)
やはり本家Microsoft.comのよく聞く?MSDNを探ってみるのも・・・(あまり深く見ると楽しむ前に挫折しかかるので、下記はほどほどに・・・)

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 のプロパティ・メソッドを調べる] を 見てください。


[#Search][ページ内のTOPへ戻る]

番外編 GoogleでoIE,objIE,WebBrowserをKeyWordにして検索

検索エンジンやリンクから、せっかく私のサイトに来ていただいたのですが、下記2つの検索結果がかなり参考になったり・・・するのでは???
IE|oIE|WebBrowser|objIE 魔界の 2つをキーワードにしてGoogleで検索する
(↑かなりの確立で有効な回答が得られると思います、先輩方の回答を見ると謎が解けると思います。私もすらっと回答できる、そんな人になりたいですね。。。)
↓あとは、パターン的にoIE,objIEと変数名を定義している人とWebBrowser1.が多いので、
oIE|objIE|WebBrowserをキーワードにしてGoogleで検索する
も有効かなぁ。※短いサンプルなどが見つかり、参考となるのでは?

さらに検索を紹介すると、[InternetExplorer.application]をキーワードにしてマイクロソフト内を検索する
などなど・・・

↑1歩1歩独自で進めたい人はこんな感じで、実際のコード や 掲示板・ML上の自分と似た質問のやりとりを見ながら進めるのがいいと思います。
※また、BBSやMLの空気を読んで(過去ログも読んで)、上級者がいらっしゃる掲示板に質問を投げてみるのもひとつの手です。
検索に迷ったら(IE操作の道に迷ったら)、objIEoIE さらに InternetExplorer.applicationDocument.All などをキーワードにGoogleやYahooで探ってみてください。

脱線すると、google検索のワンダーホイールって面白い
↓私のよく使う変数 objIEで検索すると
objIEの結果をワンダーホイールで表示
↑なかなか、楽しめそうです。※関連項目の全てが線でつながらないけど(全てつながるとかなり面白いのに。)
googleってすげぇなぁ。


不思議なIEお嬢様、まだまだ攻略できそうにないよね。
えっ、Excel姫やAccessお姉さまも攻略して無いダロって?
※う〜ん、実力無くて、なかなか、攻略できなくて。。。。
何かの参考となれば幸いです。


[#BackNoLink][ページ内のTOPへ戻る]

過去のメールマガジンのリンクが長かったので、下記に移動しました。
[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]
もあわせてみてください。
(↑もしかして書き直さない過去の解説の方がよかったかも?(笑))


プログラミングの書籍を紹介します

  1. [4873115051]- ゲームストーミング ―会議、チーム、プロジェクトを成功へと導く87のゲーム
  2. [4774146633]- Ruby on Rails 3 アプリケーションプログラミング
  3. [4774144665]- JavaScript本格入門 ~モダンスタイルによる基礎からAjax・jQueryまで
  4. [4274068560]- アジャイルサムライ−達人開発者への道−
  5. [479803200X]- オープンソースECサイト構築ソフトEC‐CUBE Ver2.11対応公式ガイドブック 応用編
  6. [4797364629]- まるごと学ぶiPhoneアプリ制作教室


[#QA_MESSAGE][ページ内のTOPへ戻る]

ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、

Blog:[サンプルコードのゴミ箱]
動画:[VBA解説・テスト動画]


[三流君(TOPへ)] / [VBAで楽しく] / [記事一覧]
カスタム検索