投資プログラマー’S WEB
最終更新日:2009/2/4
IE操作DLL 詳細説明
構造体
 ・Str_LinkCheckInfo(リンクチェック情報)
 ・Str_LinkClickInfo(リンククリック情報)

列挙体
 ・EnmErrInfo_Click(クリック/チェック実行エラー)
 ・EnmErrInfo_OpenWait(アクセス完了待ちエラー)

プロパティ
 ・BodyHtml(BodyHtml取得)
 ・Document(IEドキュメントオブジェクト取得)
 ・ErrInfo_Exception(エラー状態取得(例外))
 ・ErrInfo_OpenWait(エラー状態取得(読み込みエラー))
 ・ErrInfo_LinkClick(エラー状態取得(リンククリック/チェックエラー))
 ・IE(IEオブジェクト取得)
 ・LinkClickInfo(クリックしたリンクの情報取得)
 ・LinkCheckInfo(チェックしたリンクの情報取得)
 ・Title(Title取得)
 ・Url(URL取得)
 ・Visible(IEの表示・非表示)
 ・WaitTime(ページ表示待ち時間設定)

メソッド
 ・New(コンストラクタ)
 ・OpenWeb(ページ読み込み処理)
 ・OpenWeb_NonWait(ページ読み込み(待ちなし)処理)
 ・OpenWeb_Wait(読み込み完了待ち処理)
 ・OpenWeb_WaitInStr(読み込み完了待ち処理2)
 ・SitePost(POST処理)
 ・CompTitle(タイトル比較処理)
 ・LinkClick(リンククリック処理(番号指定))
 ・LinkClick_Label(リンククリック処理(リンク表示名指定))
 ・LinkClick_Label_Inc(リンククリック処理(リンク表示名指定・含む))
 ・LinkClick_Url(リンククリック処理(URL指定))
 ・LinkClick_Url_Inc(リンククリック処理(URL指定・含む))
 ・LinkCheck_Label(リンクチェック処理(リンク表示名指定))
 ・LinkCheck_Label_Inc(リンクチェック処理(リンク表示名指定・含む))
 ・LinkCheck_Url(リンクチェック処理(URL指定))
 ・LinkCheck_Url_Inc(リンクチェック処理(URL指定・含む))
 ・Reload(再読み込み処理)
 ・EnforceStop(読み込み待ち強制停止)
 ・Quit(IE終了処理)

サンプルダウンロード
構造体
Str_LinkCheckInfo(リンクチェック情報)
LinkCheckInfoプロパティで取得するデータを格納します。
Public Structure Str_LinkCheckInfo
    Dim linkNumber As Integer  ・・・何個のリンクが見つかったか(複数OKの場合は1以上)
    Dim linkData() As Str_LinkCheckInfoData  ・・・各リンクの情報
    Public Structure Str_LinkCheckInfoData
        Dim linkNo As Integer  ・・・見つかったリンクは何番目のリンクか。0からカウント
        Dim linkLabel As String  ・・・見つかったリンクのラベル
        Dim linkUrl As String  ・・・見つかったリンクのURL
    End Structure
End Structure

Str_LinkClickInfo(リンククリック情報)
LinkClickInfoプロパティで取得するデータを格納します。
Public Structure Str_LinkClickInfo
    Dim linkNo As Integer  ・・・クリックしたリンクは何番目のリンクか。0からカウント
    Dim linkLabel As String  ・・・クリックしたリンクのラベル
    Dim linkUrl As String  ・・・クリックしたリンクのURL
End Structure

列挙体
EnmErrInfo_Click(クリック/チェック実行エラー)
LinkClickInfoプロパティで取得するデータを格納します。
Public Enum EnmErrInfo_Click
    OK  ・・・正常終了
    EXCEPTION  ・・・例外発生
    LINK_NOT_FOUND  ・・・リンクが見つかりません
    WEB  ・・・Webアクセスが異常
    PAGE  ・・・ページが異常です
    LINK_PLULAL_FOUND  ・・・複数リンクが見つかりました
End Enum

EnmErrInfo_OpenWait(アクセス完了待ちエラー)
ErrInfo_OpenWaitプロパティで取得するデータを格納します。
Public Enum EnmErrInfo_OpenWait
    OK  ・・・正常終了
    EXCEPTION  ・・・例外発生
    TIMEOUT  ・・・タイムアウト
    USER_STOP  ・・・ユーザによる停止
    NOT_FOUND  ・・・サーバが見つかりません
End Enum

プロパティ
BodyHtml(BodyHtml取得)
Public ReadOnly Property BodyHtml() As String
内部で保持しているInternetExplorerのオブジェクトのBodyのHtmlを取得します。
_objWebAccess.IE.Document.Body.InnerHtmlと同意です。

Document(IEドキュメントオブジェクト取得)
Public ReadOnly Property Document() As Object
内部で保持しているInternetExplorerのオブジェクトのDocumentを取得します。
_objWebAccess.IE.Documentと同意です。

ErrInfo_Exception(エラー状態取得(例外))
Public ReadOnly Property ErrInfo_Exception() As Exception
メソッドの実行が失敗した際の要因が例外の場合、本プロパティにてExceptionデータを取得します。
ErrInfo_OpenWait(エラー状態取得(読み込みエラー))
Public ReadOnly Property ErrInfo_OpenWait() As EnmErrInfo_OpenWait
以下のメソッドがエラー終了した場合、本プロパティにて情報を取得できます。 取得する型はEnmErrInfo_OpenWaitです。
OpenWeb
OpenWeb_NonWait
OpenWeb_Wait
OpenWeb_WaitInStr

ErrInfo_LinkClick(エラー状態取得(リンククリック/チェックエラー))
Public ReadOnly Property ErrInfo_LinkClick() As EnmErrInfo_Click
以下のメソッドがエラー終了した場合、本プロパティにて情報を取得できます。 取得する型はEnmErrInfo_Clickです。
LinkClick
LinkClick_Label
LinkClick_Label_Inc
LinkClick_Url
LinkClick_Url_Inc
LinkCheck_Label
LinkCheck_Label_Inc
LinkCheck_Url_Inc

IE(IEオブジェクト取得)
Public ReadOnly Property IE() As SHDocVw.InternetExplorer
内部で保持しているInternetExplorerのオブジェクトを取得します。
ページのコントロールを操作したい場合などに、IEオブジェクトを取得するために使用します。

LinkClickInfo(クリックしたリンクの情報取得)
Public ReadOnly Property LinkClickInfo() As Str_LinkClickInfo
以下のメソッドが正常に終了した場合、本プロパティにて情報を取得できます。 取得する型はStr_LinkClickInfoです。
LinkClick_Label
LinkClick_Label_Inc
LinkClick_Url
LinkClick_Url_Inc
LinkCheckInfo(チェックしたリンクの情報取得)
Public ReadOnly Property LinkCheckInfo() As Str_LinkCheckInfo
以下のメソッドが正常に終了した場合、本プロパティにて情報を取得できます。 取得する型はStr_LinkCheckInfoです。
LinkCheck_Label
LinkCheck_Label_Inc
LinkCheck_Url_Inc

Title(Title取得)
Public ReadOnly Property Title() As String
表示中のページのTitleを取得します。
_objWebAccess.Document.Titleと同意です。

Url(URL取得)
Public ReadOnly Property Url() As String
表示中のページのURLを取得します。
_objWebAccess.Document.Urlと同意です。

Visible(IEの表示・非表示)
Public Property Visible() As Boolean
IEの表示・非表示を取得・設定します。

WaitTime(ページ表示待ち時間設定)
Public WriteOnly Property WaitTime() As Integer
ページの表示待ち時間を設定します。
OpenWebメソッドでページを表示したりOpenWeb_Waitメソッドでページの表示を待つときの待ち時間です。
これらメソッドでは、指定した時間が経過しても読み込みが終了しなければFalseで終了します。 時間を指定しなかった場合、待ち時間はカウントしません。

メソッド
New(コンストラクタ)
Public Sub New(Optional ByVal visibleMode As Boolean = False)
visibleModeでIEの表示/非表示を設定できます。 省略した場合はFalse(非表示)に設定されます。
後からVisibleプロパティで変更することもできます。

OpenWeb(ページ読み込み処理)
Public Function OpenWeb(ByVal url As String) As Boolean
URLの文字列を引数で渡すことで、指定したページを開きます。
また、ページが表示されるまで待ちます。
WaitTimeプロパティで設定した時間が経過しても ページの読み込みが完了しなかった場合は、 戻り値としてFalseを返します。

戻り値がFalseの場合、ErrInfo_OpenWaitプロパティ で原因を取得できます。

OpenWeb_NonWait(ページ読み込み(待ちなし)処理)
Public Function OpenWeb_NonWait(ByVal url As String) As Boolean
URLの文字列を引数で渡すことで、指定したページを開きます。
ページの読み込み待ちは行いません。

戻り値がFalseの場合、ErrInfo_OpenWaitプロパティ で原因を取得できます。

OpenWeb_Wait(読み込み完了待ち処理)
Public Function OpenWeb_Wait() As Boolean
現在読み込み中のページの読み込みが完了するまで待機します。
ログイン処理などでボタンを押した後に、ページの読み込みが完了するまで待つ場合に使用します。
WaitTimeプロパティで設定した時間が経過しても ページの読み込みが完了しなかった場合は、 戻り値としてFalseを返します。

戻り値がFalseの場合、ErrInfo_OpenWaitプロパティ で原因を取得できます。

使用例
Dim _objWebAccess As New clsComWebIE.clsComWebIE(False)      'IE操作オブジェクト作成
_objWebAccess.OpenWeb("http://www.xx.xx")      'どこかのサイトのログインページ
_objWebAccess.GetIE.Document.all.LoginId.Value = "id"                   'IDを入力する
_objWebAccess.GetIE.Document.all.passwd.Value = "password"        
'パスワードを入力する
_objWebAccess.GetIE.Document.forms(1).submit()                         'ボタン入力

'読み込みを待つ
If _objWebAccess.OpenWeb_Wait <> True Then
   Exit Sub               'ログイン失敗
End If
OpenWeb_WaitInStr(読み込み完了待ち処理2)
Public Function OpenWeb_WaitInStr(ByVal findStr As String) As Boolean
表示中サイトのhtml中に指定した文字列が見つかるまで読み込み待ちを行います。
サイトによっては、OpenWeb_Waitメソッドが正常終了しても読み込み中の場合があるので、対策として用います。
WaitTimeプロパティで設定した時間が経過しても ページの読み込みが完了しなかった場合は、 戻り値としてFalseを返します。

戻り値がFalseの場合、ErrInfo_OpenWaitプロパティ で原因を取得できます。

使用例
Dim _objWebAccess As New clsComWebIE.clsComWebIE(False)      'IE操作オブジェクト作成
_objWebAccess.OpenWeb("http://www.xx.xx")      'どこかのサイトのログインページ
_objWebAccess.GetIE.Document.all.LoginId.Value = "id"                   'IDを入力する
_objWebAccess.GetIE.Document.all.passwd.Value = "password"        
'パスワードを入力する
_objWebAccess.GetIE.Document.forms(1).submit()                         'ボタン入力

'読み込みを待つ
If _objWebAccess.OpenWeb_WaitInStr("ログイン完了") <> True Then
   Exit Sub               'ログイン失敗
End If
SitePost(POST処理)
Public Function SitePost(ByVal targetUrl As String, ByVal postData As String) As Boolean
POSTを行います。
引数のtargetUrlは対象サイトのURL、postDataはPOSTするデータ文字列です。

WaitTimeプロパティで設定した時間が経過しても ページの読み込みが完了しなかった場合は、 戻り値としてFalseを返します。

CompTitle(タイトル比較処理)
Public Function CompTitle(ByVal title As String, Optional ByVal innerCheckMode As Boolean = False) As Boolean
引数で指定した文字列と、HTMLのタイトルタグの文字列と比較し、結果を返します。
innerCheckMode=Trueの場合、文字列がタイトルに含まれれば、True終了します。
innerCheckMode=Falseの場合、文字列とタイトルが一致した場合にTrue終了します。

LinkClick(リンククリック処理(番号指定))
Public Function LinkClick(ByVal position As Integer) As Boolean
引数のpositionで指定した番号のリンクをクリックします。
番号は、表示しているページのリンクを上から数えた場合の番号(0〜)です。
また、クリック後のページの読み込みが完了するまで待機します。
WaitTimeプロパティで設定した時間が経過しても ページの読み込みが完了しなかった場合は、 戻り値としてFalseを返します。

戻り値がFalseの場合、ErrInfo_OpenWaitプロパティ で原因を取得できます。

LinkClick_Label(リンククリック処理(リンク表示名指定))
Public Function LinkClick_Label( _
    ByVal txtStr As String, _
    Optional ByVal plulalMode As Boolean = True, _
    Optional ByVal clickLinkNo As Integer = 0) As Boolean
引数のtxtStrで指定された文字列と一致する表記のリンク先を探し、見つかればクリックします。
(<a href="">★</a>の部分)
引数のplulalModeは、複数リンク存在時の動作を指定します。省略するとTrue扱いになります。
 True:複数リンクが見つかった場合、引数のclickLinkNoで指定した番号(0〜)をクリック
 False:複数リンクが見つかったらFalse終了する。

また、クリック後のページの読み込みが完了するまで待機します。
WaitTimeプロパティで設定した時間が経過しても ページの読み込みが完了しなかった場合は、 戻り値としてFalseを返します。

戻り値がFalseの場合、ErrInfo_LinkClickプロパティ で原因を取得できます。

LinkClick_Label_Inc(リンククリック処理(リンク表示名指定・含む))
Public Function LinkClick_Label_Inc( _
    ByVal txtStr As String, _
    Optional ByVal plulalMode As Boolean = True, _
    Optional ByVal clickLinkNo As Integer = 0) As Boolean
引数のtxtStrで指定された文字列を含む表記のリンク先を探し、見つかればクリックします。
それ以外の動作はLinkClick_Labelと同様です。

LinkClick_Url(リンククリック処理(URL指定))
Public Function LinkClick_Url( _
    ByVal txtStr As String, _
    Optional ByVal plulalMode As Boolean = True, _
    Optional ByVal clickLinkNo As Integer = 0) As Boolean
引数のtxtStrで指定された文字列とURLが一致するリンクを探し、見つかればクリックします。
(<a href="★"></a>の部分)
引数のplulalModeは、複数リンク存在時の動作を指定します。省略するとTrue扱いになります。
 True:複数リンクが見つかった場合、引数のclickLinkNoで指定した番号(0〜)をクリック
 False:複数リンクが見つかったらFalse終了する。

また、クリック後のページの読み込みが完了するまで待機します。
WaitTimeプロパティで設定した時間が経過しても ページの読み込みが完了しなかった場合は、 戻り値としてFalseを返します。

戻り値がFalseの場合、ErrInfo_LinkClickプロパティ で原因を取得できます。

LinkClick_Url_Inc(リンククリック処理(URL指定・含む))
Public Function LinkClick_Url_Inc( _
    ByVal txtStr As String, _
    Optional ByVal plulalMode As Boolean = True, _
    Optional ByVal clickLinkNo As Integer = 0) As Boolean
引数のtxtStrで指定された文字列を含むURLのリンク先を探し、見つかればクリックします。
それ以外の動作はLinkClick_Urlと同様です。

LinkCheck_Label(リンクチェック処理(リンク表示名指定))
Public Function LinkCheck_Label( _
    ByVal txtStr As String, _
    Optional ByVal plulalMode As Boolean = True) As Boolean
引数のtxtStrで指定された文字列と一致する表記のリンク先を探し、見つかればTrue終了します。
(<a href="">★</a>の部分)
引数のplulalModeは、複数リンク存在時の動作を指定します。省略するとTrue扱いになります。
 True:複数リンクが見つかった場合でもTrue終了します
 False:複数リンクが見つかったらFalse終了します。

戻り値がFalseの場合、ErrInfo_LinkClickプロパティ で原因を取得できます。

LinkCheck_Label_Inc(リンクチェック処理(リンク表示名指定・含む))
Public Function LinkCheck_Label_Inc( _
    ByVal txtStr As String, _
    Optional ByVal plulalMode As Boolean = True) As Boolean
引数のtxtStrで指定された文字列を含む表記のリンク先を探し、見つかればTrue終了します。
それ以外の動作はLinkCheck_Labelと同様です。

LinkCheck_Url(リンクチェック処理(URL指定))
Public Function LinkCheck_Url( _
    ByVal txtStr As String, _
    Optional ByVal plulalMode As Boolean = True) As Boolean
引数のtxtStrで指定された文字列とURLが一致する表記のリンクを探し、見つかればTrue終了します。
(<a href="★"></a>の部分)
引数のplulalModeは、複数リンク存在時の動作を指定します。省略するとTrue扱いになります。
 True:複数リンクが見つかった場合でもTrue終了します
 False:複数リンクが見つかったらFalse終了します。

戻り値がFalseの場合、ErrInfo_LinkClickプロパティ で原因を取得できます。

LinkCheck_Url_Inc(リンクチェック処理(URL指定・含む))
Public Function LinkCheck_Url_Inc( _
    ByVal txtStr As String, _
    Optional ByVal plulalMode As Boolean = True) As Boolean
引数のtxtStrで指定された文字列を含むURLのリンク先を探し、見つかればTrue終了します。
それ以外の動作はLinkCheck_Urlと同様です。

Reload(再読み込み処理)
Public Function Reload() As Boolean
現在表示中のページを再度読み込みます。

EnforceStop(読み込み待ち強制停止)
Public Sub EnforceStop()
InternetExplorerの読み込み待ち処理を終了します。

Quit(IE終了処理)
Public Function Quit() As Boolean
InternetExplorerを終了します。

サンプルダウンロード
sample1.lzh・・・Yahooにログインします。

※Interop.MSHTML.dllとInterop.SHDocVw.dllはプロジェクトで参照を行っていますが、 サイズが大きいためにファイルに入れていません。 ソリューション起動時にこれらは開発環境から自動で読み込みが行われて用意されますが、 その分初回起動時に数分ほど時間がかかってしまうと思います。