2017-05-30 16 views
0

コードが正常に動作しますが、私はIEを閉じるしようとすると、私は次のエラーを取得する:実行時エラー91 - IEオブジェクト

"Run Time Error 91"

Dim IE As Object 
Dim shellWins As New ShellWindows 
Dim IE_URL As String 
Dim Row As Integer 

Row = 2 

For Each IE In shellWins 
    IE_URL = IE.LocationURL 
    If IE_URL <> vbNullString Then 
     Sheet1.Range("A" & Row) = IE_URL 
     row = Row + 1 
    End If 
Next 

Set shellWins = Nothing 
Set IE = Nothing 

IE.quit 

NEW CODE:

Dim shellWins As New ShellWindows 
Dim objIE As Object 
Dim objIE_TabURL As String 
Dim Rowcount As Long 

Rowcount = 2 

With objIE 

    Set objIE = CreateObject("InternetExplorer.Application") 

     For Each objIE In shellWins 

     objIE_TabURL = objIE.LocationURL 

      If objIE_TabURL <> vbNullString And InStr(objIE_TabURL,  
      "file://") = 0 Then 

       Rowcount = Rowcount + 1 
       sht2.Range("A" & Rowcount) = objIE_TabURL 

      End If 

     Next 

    objIE.Quit 

End With 

END NEW CODE

IEセッションで開いているタブからURLを読み込み、シートに書き出しようとしています。

ごめんなさいしかし

+2

あなたは 'IE = Nothing'を終了する前に' IE'オブジェクトを削除したので、それ以降はそれにアクセスすることはできません。 'IE = Nothing'が動作するはずです。 –

+2

@ Peh実際には、 'IE'はループ外のInternet Explorerのインスタンスに設定されていないので、動作しません。 –

+1

@MacroManあなたはまったく正しいです。最終的にエラーメッセージと一致する明らかな問題だけを見ました。 –

答えて

1

IE :-(VBAで初心者が実際にどの時点でのInternet Explorerのインスタンスに設定されていない私は、あなたがオブジェクトバリアントとしてそれを使用していますよループが終了すると、変数は範囲外になりますので、希望通りにアクセスすることはできません。

URLを取得した後でIEを終了するには、コードを次のように変更します。

For Each IE In shellWins 
    IE_URL = IE.LocationURL 
    If IE_URL <> vbNullString Then 
     Sheet1.Range("A" & Row) = IE_URL 
     row = Row + 1 
     IE.Quit '// Close IE here, while the variable is still in scope 
    End If 
Next 

VBAが自動的にメモリを管理するため、ルーチンの最後にが表示されます。

+0

私はあなたのコードを使用しようとしますが、1つのタブ(とie)はなぜ開いているのですか? – Thomasvba

+0

あなたのコードのロジックは、あなたが探しているURLと一致するIEのインスタンスだけを閉じることを意味します。すべてのIEウィンドウを閉じるには、ロジックを再配置する必要があります。 –

+0

提案? :-) – Thomasvba

関連する問題