2017-08-20 55 views
0

Access 2010 32ビットを使用してWindows 10ボックスでスクレイピングソリューションを使用しています IEオブジェクトが何らかの形でNothingにリセットされている問題があります以下のスニペットの17)。 ステップにより、コードのステップを実行している場合は、動作しているようです。 視覚的にエクスプローラウィンドウを検査すると予想されるように見える。 私はここで間違って何をしているのですか?任意のアイデア/提案は非常に感謝しています。VBA Internet Explorerの自動化MS Edgeオブジェクトにアクセスする

Public Function politseiKontroll(dokument As String) As String 
Dim ie As Object 
Dim element As Object 
Dim filenum 
Const URL As String = "https://www.politsei.ee/et/teenused/e-paringud/dokumendi-kehtivuse-kontroll/" 
Const SIGNATURE = MODULE_NAME & "politseiKontroll" 
On Error GoTo ERR_ 

If Len(Trim(dokument)) = 0 Or Len(Trim(dokument)) > 20 Then 
    politseiKontroll = "Number on liiga pikk (20 max)" 
    Exit Function 
End If 
1 Set ie = CreateObject("InternetExplorer.Application") 
2 ie.visible = True 
' 2 Prevents the URL from being added to the history list 
' 4 Prevents the browser from reading the page from the disk cache 
' 8 Prevents the URL from being added to the disk cache 
3 ie.Navigate URL, 2 + 4 + 8 ' prevent using page from local cache 
4 While ie.Busy And ie.ReadyState <> 4 ' READYSTATE_COMPLETE 
5 DoEvents 
6 Wend 
7 If ie.Document Is Nothing Then 
    ie.Quit 
8 Set ie = Nothing 
9 politseiKontroll = "Serveri vastus puudub" 
10 End If 
11 Set element = ie.Document.getElementsByName("docNumber") 
12 If element.length <> 1 Then 
13  ie.Quit 
14  Set ie = Nothing 
15  politseiKontroll = "Serveri vastuse formaat on vale" 
16 End If 
17 ie.Document.getElementsByName("docNumber")(0).value = dokument 
While ie.Busy And ie.ReadyState <> 4 ' READYSTATE_COMPLETE 
    DoEvents 
Wend 
18 Set element = ie.Document.getElementsByName("subButton") 
19 If element.length <> 1 Then 
20 ie.Quit 
21 Set ie = Nothing 
22 politseiKontroll = "Serveri vastuse formaat on vale" 
23 End If 
24 ie.Document.getElementsByName("subButton")(0).Click 
25 While ie.Busy And ie.ReadyState <> 4 
26 DoEvents 
27 Wend 
28 Stop 
29 ie.Quit 
30 Set ie = Nothing 
31 DoEvents 

EXIT_: 
32 Exit Function 
ERR_: 
' Dim eClone As New errClone 
' eClone.init err, , erl 
    If Not ie Is Nothing Then 
     ie.Quit 
     Set ie = Nothing 
     DoEvents 
    End If 
' Set eClone = errorHandler.reportError(eClone, SIGNATURE) 
' If eClone.stopExecution Then 
     Stop 
' End If 
    Resume EXIT_ 
End Function 

答えて

1

IEを終了すると、後でこのオブジェクトを使用しないでください。

12 If element.length <> 1 Then 
13  ie.Quit 
14  Set ie = Nothing 
15  politseiKontroll = "Serveri vastuse formaat on vale" 
16 End If 

If Not ie Is Nothing Then 
    ie.Document.getElementsByName("docNumber")(0).value = dokument 
    While ie.Busy And ie.ReadyState <> 4 ' READYSTATE_COMPLETE 
     DoEvents 
    Wend 
<snip> 
関連する問題