解析エンジニアの自動化 blog

コツコツと自動化した方法を残す blog

◯VBScript による IE のフレーム構造のタグ取得




こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。



さぁ〜て!!この記事の目次は!?




目的


フレーム構造を持つ Web ページを操作するため、操作したいタグを取得する関数を作成します。




関数

ソースコード

この関数は上位オブジェクト、フレーム名、タグ名、タグに含まれる文字列を引数としてタグオブジェクトを返す関数です。タグが見つからなければ Nothing を返します。

getTagInFrameByNameProperty_objUpper-FrameNameProperty-TagName-InString.vbs

Function getTagInFrameByNameProperty(objUpper, FrameNameProperty, TagName, InString)
   '----------------------------
   '--- まず全フレームの取得 ---
   '----------------------------
   Set objFrames = objUpper.document.frames
   '----------------------------------
   '--- フレームのドキュメント取得 ---
   '----------------------------------
   Set objFrameDoc = objFrames(FrameNameProperty).Document
   '----------------------------------------------------
   '--- name 属性が FrameNameProperty の           ---
   '--- frame の InString を含む TagName タグを取得 ---
   '----------------------------------------------------
   Set Tags = objFrameDoc.getElementsByTagName(TagName)
   set LookAtTag = Nothing
   for i = 0 To Tags.Length - 1
       if Instr(Tags(i).outerHTML, InString)>0 then
           set LookAtTag = Tags(i)
           exit for
       end if
   Next
   '--------------------------------------
   '--- 対象オブジェクトの有無確認 ---
   '--------------------------------------
   if LookAtTag is Nothing then
       Msgbox "name 属性が " & FrameNameProperty & "の frame の " & InString & " を含む "  & TagName & " タグを見つけることが出来ませんでした。"
       set getTagInFrameByNameProperty = Nothing
   else
       set getTagInFrameByNameProperty = LookAtTag
   end if
End Function

使い方

作成した getTagInFrameByNameProperty_objUpper-FrameNameProperty-TagName-InString.vbs ファイルを呼び出して使うプログラムを書きます。

main.vbs

'----------------------------------------------
'--- frame のタグオブジェクトを取得 ---
'----------------------------------------------
   '--- 変数宣言 ---
   FrameNameProperty = "frame_name"
   TagName = "a"
   InString = "リンク"
   '--- 実行 ---
   set objFrmDoc = getTagInFrameByNameProperty(objIE , FrameNameProperty , TagName , InString)




コメント

これで、 main.vbs を実行するとタグオブジェクトを返します。探しているタグが見つからない時は Nothing を返します。




以上