ken3memo (三流君)

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
(※詳細は[三流君 三流プログラマーとは?]を見てください)




[記事一覧、バックナンバーを見る]

2009-06-14

6/14 .ReadyState プロパティ の テスト IE操作 VBA

D

http://www.youtube.com/watch?v=-tVlRY0DSZU

よく見かけるIEの表示待ちは、.ReadyStateが4(READYSTATE_ COMPLETE)になるまでループ

下記のような感じだと思います。

While objIE.ReadyState <> 4

DoEvents

Wend

でも、 なぜ4?と疑問を持ちますよね?

そんな疑問を少しでも解消するためにループの中で.ReadyStateを表示するテ ストをしてみます。

カテゴリ: 科学と技術

タグ: .ReadyState プロパティ テスト IE操作 VBA 三流君

テストで使ったソースは http://ken3-info.blog.ocn.ne.jp/objie/2009/06/readystate_1393.html を見てください。

'参照設定 Microsoft Internet Controls(Microsoft Browser Helpers)
'参照設定の方法は、 http://www.ken3.org/cgi-bin/group/vba_ie_object.asp をみてください。

Sub ie_test()  'ページの移動後、.ReadyState <> READYSTATE_COMPLETE を テストする。

    'IEの起動
    Dim objIE As InternetExplorer '変数を定義します。
    Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。
    objIE.Visible = True '可視、Trueで見えるようにします。
    
    '表示位置とサイズを調整する
    objIE.FullScreen = False  '※まぁ、わざわざ設定しなくてもいいけど。
    objIE.Top = 100      '左上 上位置
    objIE.Left = 100     '左上 左位置
    objIE.Width = 800    '横幅
    objIE.Height = 600   '高さ
    
    'XXXバー、外観・外枠の調整。
    objIE.Toolbar = True     'タブの切り替えで必要なので、ツールバーを表示にする
    objIE.MenuBar = False    'メニューは非表示にする
    objIE.AddressBar = True  'URLなど アドレスバーは確認のため、表示する
    objIE.StatusBar = True   '一番下のステータスバーを表示。
    
    'テストで yahoo.co.jp を表示する。
    Debug.Print objIE.ReadyState   'ページ移動前に.ReadyStateをテストで表示する。
    objIE.Navigate "http://www.yahoo.co.jp/"
    
    'ページの表示を待ち
    Dim strWORK As String   '前回表示文字
    Dim strReadyState As String   '秒とReadyStateを文字列にする
    strWORK = ""
    While objIE.ReadyState <> READYSTATE_COMPLETE '.ReadyState <> 4の間まわる。
        strReadyState = Second(Now) & ":" & objIE.ReadyState  '秒と.ReadyStateを作成
        If strWORK <> strReadyState Then  '前回表示した文字列と比較して違ったら
            Debug.Print strReadyState     '秒とReadyStateを表示する。
            strWORK = strReadyState       '↑で表示した文字を保存する(次回比較用)
        End If
        DoEvents  '重いので嫌いな人居るけど。
    Wend
    
    Debug.Print objIE.ReadyState   'ループを抜けた後も念のため、最後に表示する。

End Sub

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/ken3memo/20090614/1245007611




[記事一覧、バックナンバーを見る]








ブログトップ 記事一覧 ログイン 無料ブログ開設