VBAの勉強を始めてみた

色々試しています。

VBAでIEを操る(フレームについて)

今回は、フレームについてです。
社内システムでは未だに使われていたりするので、いちおう書いときましょう。

 

フレームとは?

複数個に分割した画面に、それぞれ別のページを表示する機能です。下の例では、3つのHTMLファイルが用意されます。

f:id:kouten0430:20180909000454j:plain

・構成.html(画面表示なし)

  • ユーザーは、この構成用HTMLファイルを読み込むことになります。分割の縦横サイズの設定、分割画面に表示するHTMLファイルのURLなどが記されています。

・メニュー.html(画面左)

・内容.html(画面右)

 

フレーム構造をもったページを操作する

この場合、IE直下のdocumentプロパティでは、フレーム以下のDOMまでは取得できません。

  • 誤:

f:id:kouten0430:20180909001221j:plain

 

frameタグから、さらにdocumentプロパティを参照する必要があります。

  • 正:

f:id:kouten0430:20180909000832j:plain

 

構成.htmlが「親」だとしたら、メニュー.htmlと内容.htmlが「子」です。
もし「孫」「ひ孫」があっても、同じようにそれぞれdocumentプロパティを参照する必要があります。

 

 フレーム以下の要素を取得する場合の記述

一行で記述するならこうです。

  • Set myElem = ie.document.frames(0).document.getElementsByTagName("p")(0)

※取得したいフレーム、要素がそれぞれインデックス0である場合