VBAのIE(InternetExplorer)制御に便利なサブルーチンを紹介しています。
Function frameTagValue(objIE As InternetExplorer, _
tagName As String, _
tagStr As String, _
valueType As String) As String
'フレームのオブジェクトを取得する
Set objFrame = objIE.document.frames
'フレームドキュメントのオブジェクトを取得する
For i = 0 To objFrame.Length - 1
Set objFrameDoc = objFrame(i).document
For Each objTag In objFrameDoc.getElementsByTagName(tagName)
With objTag
If InStr(.outerHTML, tagStr) > 0 Then
Select Case valueType
Case "innerHTML"
FrameTagValue = .innerHTML
Case "innerText"
FrameTagValue = .innerText
Case "outerHTML"
FrameTagValue = .outerHTML
Case "outerText"
FrameTagValue = .outerText
End Select
GoTo label01
End If
End With
Next
Next i
label01:
End Function
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
---|---|---|---|---|---|
objIE | InternetExplorer | IEオブジェクト | objIE,objIE2 | × | |
tagName | String | 目的タグの文字列 | "p","h1","tr","li" | × | |
tagStr | String | 目的エレメント内の一意のキーワード文字列 | "p-value" | × | |
valueType | String | 要素テキスト取得のプロパティ文字列 | "innerHTML", "innerText", "outerHTML", "outerText" | × |
こちらは、全て必須項目となります。
「objIE」はオブジェクトを入力します。
「tagName」はタグ要素(a,p,inputなど)の文字列を入力します。
「tagStr」には、エレメントに含まれる一意のキーワード文字列を入力します。「一意のキーワード」とはそこでしか使われていない文字列のことです。
探すポイントとしては、まずid属性が設定されているか確認してください。id属性は一意の属性ですので、こちらが設定されていれば簡単に取得できます。今回のpタグもid="p-value"があるエレメントを取得するという設定になっています。
id属性がない場合は、name属性・class属性で一意のキーワードがないか確認していきます。また、リンクのテキストを取得する場合は、URLの法則を見つけ、一意のキーワードを探していきます。
「valueType」には、要素テキスト取得のプロパティ(innerHTML,innerText,outerHTML,outerText)の文字列を入力します。