◯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 を返します。
以上