IEでフレーム(frame)内の値を取得したいケースがあります。
フレームでは親ページと子ページに分かれます。
子ページの名称を付与して処理するだけで、基本は下記のデータ取得方法と同一です。
VBAでIE操作「表示中のWebページのタイトル/URLを取得」
VBAでIE操作「データ取得するinnerText/innerHTML/outerText/outerHTML」
フレームページのサンプル
//フレームHTMLサンプル
<html>
<head>
<title>サンプル親ページ</title>
<meta http-equiv="content-type" charset="utf-8">
</head>
<frameset cols="50%,*" rows="*">
<frame src="01index.html" name="index">
<frame src="02menu.html" name="menu">
</frameset>
<body>
</body>
</html>
VBAでフレーム内の各種データを取得
下記VBAコードサンプルのように、objFrame(“menu”) とフレーム内の子要素を指定した上で決定します。
それ以外は通常のWebサイトと取得方法は同一です。
'■フレームの情報取得
Set objFrame = objIE.document.frames
'frame数の取得
objFrame.length
'frame(menu)のouterhtml全て
objFrame("menu").document.body.outerhtml
'frame(menu)のH3タグの1番目(0)のinnertext
objFrame("menu").getElementsByTagName("h3")(0).innertext
'frame(menu)のタイトル
objFrame("menu").document.Title
その他
Internet Explorerを使用して、Webスクレイピングは敷居が高い風に捉えられますが、
上記のように、パーツ化して組み合わせ処理するだけです。
Web上のデータを触りたい要望は会社様でも個人様でも多いと思います。
VBA IE操作を覚えて効率化しませんか?
作成が大変であれば弊社で代行開発も可能です。お気軽にお問い合わせください。



コメント