エクセルマクロ オンライン講座コメント紹介

コメント紹介
   └ エクセルマクロVBA「Web連携」
       └ エクセルマクロVBA「Web連携」Microsoft Internet ControlsならではのWebコンテンツの取得

エクセルマクロVBA「Web連携」Microsoft Internet ControlsならではのWebコンテンツの取得

[10181] 2018-06-30 12:26:08 田中 宏明さんからの投稿です。

IEを使わないという選択がベターだとは思いますが、ついIEを使ってしまう私のIE表示待ち時間処理をご紹介させていただきます。
(講座範疇外のため添削不要です。)

Public Sub Myloop(ByRef ie As Object)
    'IE表示完了の待ち合わせ 2018/6/30
    Dim IEretry   As Boolean: IEretry = False
    Dim RepeatSec As Single:  RepeatSec = Timer

On Error GoTo INVALID

    Do While ie.Busy = True Or ie.readyState < 4 'READYSTATE_COMPLETE
        DoEvents
'        Sleep 200  '200ms停止

        If (Timer - RepeatSec) > 80 Then
            Debug.Print ie.readyState
            MsgBox "サーバーが応答していません。インターネット接続をご確認後、再度実行してください。"
            ie.Quit
            End
        ElseIf (Timer - RepeatSec) > 40 And IEretry = False Then
            'IEの再読み込みは1回限りとする
            IEretry = True
            ie.Refresh
        End If
    Loop

    Do While ie.document.readyState <> "complete"
        DoEvents
'        Sleep 200  '200ms停止
        
        If (Timer - RepeatSec) > 100 Then
            Debug.Print ie.document.readyState
            ie.Quit
            MsgBox "ドキュメントを取得できません。インターネット接続をご確認後、再度実行してください。"
            End
        End If
    Loop

    '念のため確認
    DoEvents
    If ie.Busy = True Or ie.readyState < 4 Then
        Call Myloop(ie)  '再帰呼出
    End If
    
    Exit Sub

INVALID:

    Debug.Print "エラー番号:" & Err.Number & vbNewLine & "エラーの種類:" & Err.Description
    '実行時エラー「書き込みできません。」(70)は想定内なので無視。
    'それ以外はエラーを発生させる。
    If Err.Number <> 70 Then
        Err.Raise Err.Number
    Else
        On Error GoTo 0
        MsgBox "IE読み込み時にエラー発生。処理を継続します。"
    End If

End Sub 

 


[10188] 2018-07-01 10:52:20 小川慶一さんからの投稿です。

田中 宏明さん:

情報共有ありがとうございます。
今後ともよろしくお願いいたします☆


> IEを使わないという選択がベターだとは思いますが、ついIEを使ってしまう私のIE表示待ち時間処理をご紹介させていただきます。
> (講座範疇外のため添削不要です。)
>
>
Public Sub Myloop(ByRef ie As Object)
>     'IE表示完了の待ち合わせ 2018/6/30
>     Dim IEretry   As Boolean: IEretry = False
>     Dim RepeatSec As Single:  RepeatSec = Timer
> 
> On Error GoTo INVALID
> 
>     Do While ie.Busy = True Or ie.readyState < 4 'READYSTATE_COMPLETE
>         DoEvents
> '        Sleep 200  '200ms停止
> 
>         If (Timer - RepeatSec) > 80 Then
>             Debug.Print ie.readyState
>             MsgBox "サーバーが応答していません。インターネット接続をご確認後、再度実行してください。"
>             ie.Quit
>             End
>         ElseIf (Timer - RepeatSec) > 40 And IEretry = False Then
>             'IEの再読み込みは1回限りとする
>             IEretry = True
>             ie.Refresh
>         End If
>     Loop
> 
>     Do While ie.document.readyState <> "complete"
>         DoEvents
> '        Sleep 200  '200ms停止
>         
>         If (Timer - RepeatSec) > 100 Then
>             Debug.Print ie.document.readyState
>             ie.Quit
>             MsgBox "ドキュメントを取得できません。インターネット接続をご確認後、再度実行してください。"
>             End
>         End If
>     Loop
> 
>     '念のため確認
>     DoEvents
>     If ie.Busy = True Or ie.readyState < 4 Then
>         Call Myloop(ie)  '再帰呼出
>     End If
>     
>     Exit Sub
> 
> INVALID:
> 
>     Debug.Print "エラー番号:" & Err.Number & vbNewLine & "エラーの種類:" & Err.Description
>     '実行時エラー「書き込みできません。」(70)は想定内なので無視。
>     'それ以外はエラーを発生させる。
>     If Err.Number <> 70 Then
>         Err.Raise Err.Number
>     Else
>         On Error GoTo 0
>         MsgBox "IE読み込み時にエラー発生。処理を継続します。"
>     End If
> 
> End Sub 

 


まずはここから!スマホでも学べる無料動画講座

今なら先着30名限定で無料!定価4,800円の、初心者のためのエクセルマクロ動画講座。
  1. Excel 97~Excel 2016まですべて対応。動画本数20本、総再生時間2時間44分53秒
  2. PC, Mac, iPhone, iPad, Androidのお好みの環境で、いつでも好きなときに学べます。
2004年から10年間述べ3,000名以上に実施した研修の経験と実績を集約した講座です。
いますぐ無料で試してください。

トップへ