ベンダー情報のために会社の内部SAPサイトをスクレイプするマクロを書いています。いくつかの理由で、VBAを使用する必要があります。ただし、ページをスクレイプしようとすると、なぜこれら3つのエラーが発生し続けるのか理解できません。これがUAC整合性モデルと関係がある可能性はありますか?または、私のコードに何か問題がありますか?httpを使用するWebページをInternetExplorerで別の方法で処理できる可能性はありますか?他の内部Webページも含めて、どのWebページにもアクセスでき、それぞれをうまくスクレイプできます。しかし、SAPページをスクレイプしようとすると、これらのエラーが発生します。エラーの説明と発生時期は次のとおりです。
800706B5-インターフェイスが不明です(問題のあるコードを実行する前にブレークポイントを設定すると発生します)
80004005-不特定のエラー(エラーを配置せずにマクロを実行した場合に発生します)
80010108-呼び出されたオブジェクトがクライアントから切断されました。(このエラーが一貫して発生するようには見えません。Excelの何かが破損しているためにページが読み込まれず、Excelを再インストールする必要がある頃に発生するようです)
何が起こっているのか全くわかりません。整合性ページは私にはあまり意味がありませんでした、そしてこれで私が見つけたすべての研究はデータベースへの接続とADOとCOM参照の使用について話しました。ただし、私はInternetExplorerを介してすべてを行っています。これが私の関連するコードです:
Private Sub runTest_Click()
ie.visible = True
doScrape
End Sub
'The code to run the module
Private Sub doTest()
Dim result As String
result = PageScraper.scrapeSAPPage("<some num>")
End Sub
PageScraperモジュール
Public Function scrapeSAPPage(num As Long) As String
'Predefined URL that appends num onto end to navigate to specific record in SAP
Dim url As String: url = "<url here>"
Dim ie as InternetExplorer
set ie = CreateObject("internetexplorer.application")
Dim doc as HTMLDocument
ie.navigate url 'Will always sucessfully open page, regardless of SAP or other
'pauses the exection of the code until the webpage has loaded
Do
'Will always fail on next line when attempting SAP site with error
If Not ie.Busy And ie.ReadyState = 4 Then
Application.Wait (Now + TimeValue("00:00:01"))
If Not ie.Busy And ie.ReadyState = 4 Then
Exit Do
End If
End If
DoEvents
Loop
Set doc = ie.document 'After implementation of Tim Williams changes, breaks here
'Scraping code here, not relevant
End Function
Windows7マシンでIE9とExcel2010を使用しています。あなたが提供できるどんな助けや洞察も大いにありがたいです。ありがとうございました。