2

私はIEとやりとりするようにVBAをプログラミングしていますが、やり直しが始まりましたが、私はすべて解決できないような奇妙な現象私がやった研究IEオートメーション - Excel VBA ...ウェブサイトを読み込んだ後にエラーが発生する

ウェブサイトをロードするとすぐに、私はInternetExplorer Applicationへの参照をすべて失い、オブジェクトを使用できなくなります。私は完全にロードされ、サイトをチェックすると

、私はRun-Time Error 424 Object Required、またはRun-time error '-2147023179 (...)': Automation Error The interface is Unknown

私は(サイトは完全に読み込ま見ながら)このラインを越えて移動し、Set doc ...ラインを実行してしまった場合、私はRun-Time Error 462: The remote server machine does not exist or is unavailableを取得します。

私はIE 11とExcel 2010を使用しています。Microsoft Internet ControlとMicrosoftHTML Object LibraryへのVBAProject参照がありますが、遅延バインディングでもエラーが発生します。

Sub LoginToFXAll() 

Dim ieApp As InternetExplorer 
Set ieApp = New InternetExplorer 

With ieApp 

    .Visible = True 

    .Navigate "https://www.google.com/" 

    Do 
     DoEvents 
    Loop Until .ReadyState = READYSTATE_COMPLETE ''<- Run-Time Error 424 occurs here 


    Dim doc As HTMLDocument 
    Set doc = .Document '<- Run-Time Error 462 occurs here 
    doc.all("q").Value = "Scott" 

End With 

End Sub 
+0

私はそれに似た問題を抱えていましたが、ネットワークで何らかのセキュリティが使用されていますか?もしそうなら、問題は、あなたの "アクセス権"を検証しているIEのインスタンスが "破棄"されて "再構築"され、元のオブジェクトが失われてしまうことです。 – Sgdva

+0

Thanks @Sgdva - それを証明することはまだありません。とにかくそれを回避するか、新しいオブジェクトを割り当てることはありますか? (私はそう思わない)。 –

+0

悲しいことに、私はその時点で解決策を見いだしていませんでしたが、もう少し分かっているので、おそらく要素自体ではなくインターネットエクスプローラのメモリ位置を得ることができ、残念ながら、それが動作するのであれば現時点でテストすることはできませんが、それは良い回避策かもしれませんが、[ObjPtr](https://support.microsoft.com/) en-us/kb/199824) – Sgdva

答えて

0

IEが作成された後、おそらく、セキュリティネットワークが完了した後に幸運にもメモリ割り当てが行われる可能性があります。

Option Explicit 
#If VBA7 Then 
    Public Declare PtrSafe Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef destination As Any, ByRef source As Any, ByVal length As Long) 
#Else 
    Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef destination As Any, ByRef source As Any, ByVal length As Long) 
#End If 

#If VBA7 Then 
Function GetMemoryAddress(ByVal IEPointer As LongPtr) As Object 
#Else 
Function GetMemoryAddress(ByVal IEPointer As Long) As Object 
#End If 
     Dim objIE As Object 
     CopyMemory objIE, GetMemoryAddress, LenB(GetMemoryAddress) 
     Set GetMemoryAddress = objIE 
     Set objIE = Nothing 
End Function 
+0

ニース!私は再びSharepointの問題を乗り越えると、私はそれを試してみるつもりです - 私はこの可能性については当時考えなかった - – Sgdva

関連する問題